Nir Adar גירסה 1.00 עמוד 1

Μέγεθος: px
Εμφάνιση ξεκινά από τη σελίδα:

Download "Nir Adar גירסה 1.00 עמוד 1"

Transcript

1 גירסה 1.00 מבני נתונים מסמך זה הורד מהאתר. אין להפיץ מסמך זה במדיה כלשהי, ללא אישור מפורש מאת המחבר. מחבר המסמך איננו אחראי לכל נזק, ישיר או עקיף, שיגרם עקב השימוש במידע המופיע במסמך, וכן לנכונות התוכן של הנושאים המופיעים במסמך. עם זאת, המחבר עשה את מרב המאמצים כדי לספק את המידע המדויק והמלא ביותר. כל הזכויות שמורות ל Nir Adar Home Page: עמוד 1

2 עמוד 2

3 1. תוכן עניינים 3 1. תוכן עניינים הקדמה מהו מבנה נתונים מטרת המסמך ידע קודם נדרש הבדלים בין מסמך זה לבין סיכומי הנקודות זמן ריצה של אלגוריתם הגדרת זמן הריצה של אלגוריתם סיבוכיות והסימון O רקורסיה פתרון משוואות רקורסיביות ניתוח זמן ריצה של תוכניות רקורסיביות מבני נתונים בסיסיים מחסנית תור דו תור מערך רשימות מקושרות הגדרה רשימות עם כותרת מימוש רשימה מקושרת רשימה מקושרת דו כיוונית רשימה מעגלית רשימה מקושרת דו כיוונית חסכונית בזיכרון עצים ועצי חיפוש הגדרות עצים בינאריים מילון עצי חיפוש עץ AVL עצי 3-2 עצי +B מידע נוסף בעצי חיפוש רשימת דילוגים רשימת דילוגים רנדומאלית רשימת דילוגים דטרמיניסטית עמוד 3

4 ערבול (HASHING) שיטת השרשראות - פתרון התנגשויות באמצעות רשימות מקושרות פתרון התנגשויות ללא רשימות מקושרות פונקציות ערבול ערבול אוניברסאלי קבוצות זרות - FIND UNION.10 הגדרת הבעיה מימוש ראשון: שימוש במערך מימוש שני - רשימות מעגליות מימוש שלישי - מערך מצביעים + רשימות מקושרות מימוש רביעי - עצים הפוכים שימוש אפשרי - יחסי שקילות מיון 11. הגדרה - בעיית המיון מוטיבציה לשימוש במיונים מיון BUBBLE SORT.11.3 תור עדיפויות / ערימה ערימת מינימום מיון QUICKSORT.11.6 מציאת האיבר ה- I בגודלו (ללא מיון) חסם תחתון למיון על ידי השוואות מיון BUCKETSORT.11.9 מיון RADIXSORT מבני נתונים למחרוזות 12. מבנה הנתונים TRIE עץ סיומות TREE) (SUFFIX.12.2 עץ סיומות מוכלל גרפים 13. גרפים מכוונים גרפים לא מכוונים מיון טופולוגי תרגילים מסכמים 14. מערכת לניהול קורסים נספחים 15. לוגריתמים, חזקות, סדרות חשבוניות והנדסיות סיכום סיבוכיות מבני נתונים אלגוריתמי מיון - טבלה מסכמת מימוש של רשימה מקושרת דו כיוונית מימוש מערך המאותחל ב-( O( מימוש של רשימת דילוגים מימוש של עץ AVL מימוש של עץ עמוד 4

5 2. הקדמה 2.1. מהו מבנה נתונים מבנה נתונים זהו אוסף נתונים + פעולות המוגדרות על הנתונים. המשתמש במבנה הנתונים מכיר את הפעולות והשפעתן על הנתונים, אך הוא איננו נדרש להכיר את פרטי המימוש של הפעולות. באופן זה, הקוד של מבנה הנתונים יכול להיות מוחלף מבלי לפגוע בקטעי קוד המשתמשים בו. על ידי כך ניתן בזמן פיתוח של מערכת תוכנה לתכנן מימושים פשוטים ואחר כך להחליפם. כל תוכנית משתמשת במבנה נתונים על מנת לשמור את הנתונים שלה, ומכאן החשיבות של נושא זה. כאשר נבוא לדון במבני נתונים, נרצה להיות מסוגלים להשוות בין מבני נתונים, לדעת איזה מבנה נתונים יהיה היעיל ביותר עבור מטרה מסוימת, ונרצה להיות מסוגלים לנתח את היעילות של תוכנית. במסמך זה לא נסתפק בהצגה של מבני נתונים - כלומר הכרת התכונות שלהם והפעולות המוגדרות עליהם, אלא גם נכנס לתוך מבני הנתונים, נבין כיצד הם מתוכננים, וכיצד הם משיגים את היעילות שבגללה הם שימושיים עבורנו מטרת המסמך מטרת מסמך זה היא להכיר לקורא כ- 15 מבני נתונים בסיסיים, וכן אלגוריתמים שונים הקשורים אליהם. כמו כן המסמך בא לתת לקורא כלים המאפשרים לו לנתח את היעילות של הקוד שכתב: המסמך מציג את המתמטיקה הדרושה ואת דרכי החישוב של יעילות של תוכניות ידע קודם נדרש המסמך מניח שליטה בשפת C ובשפת ++C. החישובים וההוכחות המתמטיות מסתמכים על מתמטיקה בדידה ואלגברה מודרנית. עמוד 5

6 2.4. הבדלים בין מסמך זה לבין סיכומי הנקודות באתר "פרויקט "UnderWarrior מצויים זה מכבר ארבעה סיכומים בנושא מבנה נתונים, המכילים את הנושאים המוצגים במסמך זה. מסמך זה כולל את כל ארבעת הסיכומים, אולם הדגש בו שונה. בעוד שבארבעת הסיכומים ניסיתי לתמצת את הנושאים, ולהציגם בקיצור ובדייקנות ככל שניתן, במסמך זה הסברים רבים הורחבו על מנת שיהיו בהירים יותר, וכן הוספו דוגמאות רבות. מסמך זה מחליף למעשה את ארבעת המסמכים. בשנה האחרונה קיבלתי הצעות ותיקונים רבים למסמכים. התיקונים בוצעו, אך הם מופיעים במסמך זה בלבד. בחרתי להשאיר את המסמכים הישנים ללא שינוי ולהתרכז ביצירת משהו חדש ושלם יותר. כמו כן מסמך זה כולל הרחבות, דגשים מתמטיים, אלגוריתמים ומבני נתונים שלא הופיעו בסיכומים הקודמים. הנושא היחידי שנשאר כמעט ללא שינוי הוא נושא הגרפים. על נושא זה הרחבתי בסדרת מסמכים נפרדת, ולא ראיתי צורך להרחיב אותו גם במסמך זה. כתמיד, אשמח לקבל הצעות, הערות ותיקונים למסמך., יולי 2003 עמוד 6

7 3. זמן ריצה של אלגוריתם 3.1. הגדרת זמן הריצה של אלגוריתם זמן ריצה של אלגוריתם A עבור קלט x יסומן t. ( ) A זמן הריצה נמדד על ידי מספר פקודות מכונה x שהאלגוריתם מבצע על קלט נתון. מדד זה מתעלם מהבדלי מהירות בין ביצוע פקודות המכונה השונות (למשל חיבור לעומת כפל).. לדוגמא: בתוכנית המסכמת את איברי מערך x, גודל הקלט הוא מספר הגודל של קלט x יסומן ב- x איברי המערך. זמן הריצה הגרוע ביותר של אלגוריתם A עבור קלט שגודלו n מוגדר על ידי: ( A ) t ( n) = max t ( x) x = n A 3.2. סיבוכיות והסימון O הגדרה חסם עליון אסימפטוטי Ogn ( ( )) f( n) יהיו n) f( n), g( פונקציות חיוביות. נאמר שהפונקציה נמצאת בקבוצת הפונקציות g( n) כמו כן נאמר כי. f( n) c g( n) אם קיימים קבועים n, c 0 כך שלכל n0 n מתקיים: מהווה. f( n) = O( g( n)) חסם עליון אסימפטוטי לפונקציה (n )f ונסמן נשתמש בסימון זה כאשר הפונקציה היא פונקציה שקשה לתאר במדויק, בעוד ש- (n )g f( n) יותר. פשוטה עמוד 7

8 דוגמאות פולינום:. f n a an a n a n O n 2 k k ( ) = k טענה: עבור k קבוע, מתקיים ) ( =. f( n) c n k n0 n n, c 0 הוכחה: על מנת להוכיח את הטענה, נמצא קבועים נסמן: כך שלכל יתקיים:. amax = max 0, a0,..., ak k+ 1 k+ 1 2 k n 1 n. f( n) amax ( 1 + n+ n n ) = amax amax = 2amaxn n 1 n/2 c=, n = 2, הרי שהטענה הוכחה. 2a 0 max k מתקיים: אם נבחר f( n) = log n= O(log n) a b לוגריתמי: עבור כל,a, b מתקיים: לכל > 0 ε מתקיים: f( n) = log n= O( n ε ) a ( ) k n n f( n) = n + a = O( a ) a> 1 n n f( n) = a = O( b ) ( b a) אקספוננציאלי n n תרגיל: האם הטענה הבאה נכונה: ) O(2. f( n) = 3 = פתרון: הטענה איננה נכונה. n. 3 < c 2 n n0 n n, c 0 נניח בשלילה שקיימים קבועים אי שוויון זה אינו מתקיים עבור כך שעבור יתקיים <n, וזאת בסתירה לטענה. log 1.5 c עמוד 8

9 הגדרה חסם תחתון אסימפטוטי Ω( g( n)) f( n) יהיו n) f( n), g( פונקציות חיוביות. נאמר שהפונקציה נמצאת בקבוצת הפונקציות g( n) נאמר כי. f( n) c g( n) n0 n n, c 0 אם קיימים קבועים תחתון אסימפטוטי לפונקציה כך שלכל ונסמן מתקיים: מהווה חסם. f( n) = Ω( g( n)) f( n) הגדרה - חסם הדוק אסימפטוטי יהיו n) f( n), g( פונקציות חיוביות.. f( n) =Ω( g( n)) f( n) = O( g( n)) נאמר שמתקיים n)) f( n) = Θ( g( אם מתקיים כי וגם הגדרה שקולה n0 n n0, c1, c2 נאמר שמתקיים n)) f( n) = Θ( g( אם קיימים קבועים כך שלכל מתקיים. c g( n) f( n) c g( n) 1 2 הגדרה זניחות אסימפטוטית ogn ( ( )) f( n) יהיו n) f( n), g( פונקציות חיוביות. נאמר שהפונקציה נמצאת בקבוצת הפונקציות. f( n) c g( n) n0 n n 0 אם לכל קבוע c קיים קבוע כך שלכל מתקיים: במקרה זה נאמר כי (n )f זניחה אסימפטוטית יחסית לפונקציה g. הגדרה שקולה f( n). lim = 0 n gn ( ) נאמר שמתקיים n)) f( n) = o( g( אם עמוד 9

10 מגבלות הסימון האסימפטוטי נוח להשתמש בסימונים אסימפטוטים מפני שהסימון מתעלם מקבועים ומאפשר ניתוח זמנים פשוט יותר. אולם, יש לזכור לשים לב לקבועים המסתתרים בסימונים אלו. נעדיף לעיתים שימוש בפונקציה בעלת זמן אסימפטוטי גדול יותר. שימוש בסימונים בדרך כלל נשתמש בסימונים, ΩΘ,O כדי לחסום את זמן הריצה של אלגוריתם מסוים. נתייחס אל זמן הריצה האמיתי של האלגוריתם כאל הפונקציה f בהגדרה, ואל החסם אותו אנו מחפשים כאל הפונקציה g באותה הגדרה. פעולות בסדרי גודל. f ( n) 2 f ( n) 1 נניח שנתונה תוכנית בה 2 לולאות: אחת לוקחת והשנייה לוקחת. f ( n) = O( g ( n)) 2 2 כמו כן, נניח כי n)) f ( n) = O( g ( וכי אם הלולאות מופיעות אחת אחרי השנייה, אזי הזמן הכולל הוא סכום הזמנים:. f( n) = f ( n) + f ( n) 1 2. f( n) = f ( n) f ( n) אם הלולאות מקוננות, אזי הזמן הכולל הינו מכפלת הזמנים:. f ( n) = O( g ( n) ) f 2 ( n) g 2 ( n) לא תמיד מתקיים: עמוד 10

11 היררכיה של מחלקות סיבוכיות חסם קטגוריה O (1) קבוע O(log n ) 2 O(log n ) לוגריתמי... k O(log n ) On ( ) 2 On ( ) פולינומי... k On ( ) 2 log n O (2 )... O k n log (2 ) n O (2 ) n O (3 )... log On ( n ) = O(2 n n ) O... n 2 (2 ) תת אקספוננציאלי אקספוננציאלי אקספוננציאלי כפול עמוד 11

12 תרגיל מהי סיבוכיות הזמן של הקטעים הבאים כפונקציה של n (במושגים של θ)? (נסמן ב- (n )T את זמן הריצה של תוכנית עבור קלט n. א. scanf("%d",&n); sum = 0; for(i = n; i > 0; i--) k = i; while (k > i / 2) while (k > square - root(i)) k--; sum++; while (k>0) k--; sum++; פתרון. Θ 2 סיבוכיות הזמן הינה ) n ( הסבר: לולאת ה- for מתבצעת n פעמים. שתי לולאות ה- while מבצעות למעשה את אותו הדבר מקטינות את k עד שערכו שווה ל- 0, כך שבסך הכל אנחנו מבצעים i פעולות בכל איטרציה של הלולאה. נחשב את הסיבוכיות: n T n n n n n n n n n n n ( ) = + ( 1) + ( 2) ( ) = ( ) = (1 + ) =Θ( ) עמוד 12

13 ב. scanf("%d",&n); sum = 0; for(i = 2; i <= n; i++) for(j = i; j > 1; j /= 2) sum++; פתרון סיבוכיות הזמן הינה ((!n. Θ(log( הסבר: לולאת ה- for החיצונית מתבצעת 1 n פעמים. בכל איטרציה של הלולאה הפנימית אנחנו log2 מחלקים את j ב- 2 עד שערכו קטן מ- 1, כלומר מבצעים i פעולות חלוקה. ומכאן: Tn ( ) = log 2+log log n=log n! =Θ (log( n!)) ג. scanf("%d",&n); x = 2; while (x < n) x = x * x * x; ( ) i 3 3 i x (0) = 2, xi ( ) = ( xi ( 1) ) = ( xi ( 2) ) =... = x(0) = 2 n < n i n T( n) = Θ (loglog n) 3 2 i i 3 log2 log3log2 פתרון נתבונן בערך של x בכל איטרציה: עמוד 13

14 4. רקורסיה 4.1. פתרון משוואות רקורסיביות הגדרה רקורסיה היא משוואה או שוויון המתארת פונקציה בעזרת ערכים שלה על ארגומנטים קטנים יותר. המטרה שלנו. Θ או O השגת כלים לפתירת משוואות רקורסיביות. בהינתן משוואה רקורסיבית, אנו רוצים לחסום את הפתרון למשוואה בעזרת גבולות דוגמא סיבוכיות הזמן של המיון Merge-Sort יכולה להיות מתוארת על ידי המשוואה הרקורסיבית הבאה: ( ) ( ) ( ) Θ 1 n = 1 Tn ( ) = 2 T n/2 +Θ n n> 1 פתרון משוואה זו הינו n). Tn ( ) =Θ( nlog נציג מספר שיטות לפתרון רקורסיות: שיטת ההצבה. שיטת האיטרציות. שיטת.master עצי רקורסיה. עמוד 14

15 שיטת ההצבה: מנחשים צורת פיתרון. משתמשים באינדוקציה מתמטית כדי למצוא קבועים ולהוכיח את נכונות הפתרון. דוגמא ( ) Tn ( ) = 2 T n/2 + n משוואה זו מזכירה את המשוואה המתאימה ל- Merge-Sort, ולכן טבעי לנחש כי פתרונה יהיה. c> 0, T( n) c nlog n יש להוכיח:. Tn ( ) = On ( log n) ( /2 ) 2 /2 log( /2 ) T n c n n, כלומר: נניח באינדוקציה כי הפתרון מתקיים עבור 2/ n נציב במשוואה הרקורסיבית: ( ) ( ) ( ) ( ) Tn ( ) = 2 T n/2 + n 2 c n/2 log n/2 + n cnlog n/2 + n= = cn log n cn log 2 + n = cn log n cn + n cn log n נשאר להוכיח שבסיס האינדוקציה מתקיים. אם נבחר = 1 (1) T ניתקל בביטוי לא הגיוני לצורך הוכחת n0 הסיבוכיות. כדי לעקוף את הבעיה, נעזר בעובדה כי הטענה צריכה להיות נכונה רק עבור < n מסוים. אם נבחר את (3)T,(2)T כבסיס לאינדוקציה, הרי שהטענה תתקיים. שיטת האיטרציות: בשיטה זו אין צורך לנחש פתרון. אנו פותרים את הביטוי הרקורסיבי כסכום של איברים שתלויים רק ב- n ובתנאי ההתחלה. שיטת הפעולה: מתחילים לפתוח את הביטוי, ומבינים כמה איטרציות צריכים לעשות כדי להגיע אל תנאי ההתחלה. בעזרת שני אלו מרכיבים ביטוי כללי המתאר את הרקורסיה. עמוד 15

16 דוגמא מצא חסם עליון אסימפטוטי עבור T(n) המופיעה בנוסחת הנסיגה הבאה. הנח כי T(n) קבועה עבור 1=n. Tn ( ) = Tn ( 1) n+ n פתרון Tn ( ) = Tn ( 1) n+ n ( ) i= 1 i= 0 ( ) Tn ( ) = Tn ( 1) n+ n= Tn ( 2) ( n 1) + ( n 1) n+ n= = T( n 2)( n 1) n+ ( n 1) n+ n= = T( n 3)( n 2) + ( n 2) ( n 1) n+ ( n 1) n+ n= = T( n 3)( n 2)( n 1) + ( n 2)( n 1) n+ ( n 1) n+ n= n n 1 n! 1 = = n! < e n! = O( n!) ( n i)! i! e, ולכן כאשר n זהו החסם העליון. n n 1 i= 0 1 i! הגבול כאשר הינו עמוד 16

17 a 1, b> ) ( fn, Tn ( ) = atnb ( / ) + כאשר 1 שיטת :master שיטה זו נותנת פתרון מיידי עבור רקורסיות מהצורה וגם n) f( היא פונקציה חיובית אסימפטוטית. רקורסיה מצורה זו מתארת זמן ריצה של אלגוריתם המחלק בעיה בגודל n ל- a תתי בעיות, שכל אחת f( n) מהן נפתרת בזמן (b )T. /n מייצגת את זמן חלוקת הבעיה וזמן איחוד התוצאות השונות. שיטת master מתבססת על המשפט הבא: f( n) קבועים, a 1, b> יהיו 1 פונקציה, ותהי (n )T המוגדרת על שלמים אי שליליים על ידי הנוסחה הרקורסיבית ) ( fn. Tn ( ) = atnb ( / ) +, והמשפט יתקיים. n/ b n/ ניתן לרשום במקום b /n או גם b הוכחת המשפט ארוכה (כ- 3 עמודים) וכן היא מסובכת, ולכן היא מושמטת ממסמך זה.. Tn ( ) =Θ a logb ( n ) (n )T אסימפטוטית באופן הבא: n), f( כאשר > 0 ε קבוע כלשהו, אזי = O n a logb ( ). Tn ( ) =Θ n logn אזי, f( n) =Θ a f ( n/ b) c f( n) קבוע כלשהו ואם ε כאשר > 0, f( n) =Ω אזי אפשר לחסום את a logb ε ( ) a logb ( n ) a logb +ε ( n ) אם אם אם עבור ( fn). Tn ( ) =Θ ( ) קבוע כלשהו, אזי c מסוים ועבור < 1 n> n בשלושת המקרים משווים את עם (n )f צריכה להיות פולינומית n loga b. במקרים 3,1 f( n) > 0 ε כלשהו. גדולה/קטנה מ- n ε עבור פי n loga b המשפט אינו מכסה את כל האפשרויות עבור הוא מתאים. (n, )f אולם הוא מאפשר פתרון מהיר ביותר במקרים להם עמוד 17

18 דוגמא Tn ( ) = T(2 n/3) + 1 פתור את המשוואה הרקורסיבית הבאה: פתרון: ( n). Tn ( ) =Θ log. f( n) = 1 a= 1 b= 3/2 a logb ( n ) a 1 logb log 3/2 0 נסמן: = 1 n, n = n = ומכאן: =Θ(1) f( n) = Θ ולכן: עצי רקורסיה: עצי רקורסיה היא דרך נוחה להציג מה קורה במהלך הרקורסיה, וכך לפתור אותה. נדגים את השיטה בעזרת דוגמא. יש לפתור את המשוואה הרקורסיבית הבאה: n 2 ( ) = ( ) + T n 4T n logn 2 פתרון: n 2 log n n 2 log n n n 2 log ( ) log ( ) ( ( ) ( ( ) ( n ) ( n ) 2 2 log 2 2 log 2 2 log 2 2 n n 2 log n 2 n 2 n n n log n+ n log n log = n log n+ log log 2 n 2 n n log 2 times עמוד 18

19 נפתח את הביטוי שבסוגריים: log n + log n... log n log( n n... n ) n = 2 n n n n lg n lg n 1 lgn 1 n... = n n n n n lg lg n lg 2 4 n = = = 1(1 2 2 ) n 2 2 lgn lg n = n = n 1 n ( n ( log n ( n 1) log 2) ) ( n ) n n ( ( ( ) ( ))) log n 2 n 2 log 1 Tn ( ) =Θ n log =Θ n log n log 2 = n 1 2 =Θ =Θ כעת נציב שוב בביטוי הקודם. משפט (ללא הוכחה) תהי T(n) פונקציה. אם מתקיים ) ( On Tn ( ) = T( αn) + T( β n) + וגם < 1 β α + אזי T היא פונקציה ליניארית. משפט זה יכול לעיתים לתת פתרון מהיר למשוואה רקורסיבית. עמוד 19

20 4.2. ניתוח זמן ריצה של תוכניות רקורסיביות במקרים רבים ניתן להביע זמן ריצה של תוכנית רקורסיבית על קלט באורך n, כפונקציה של זמן ריצתה על קלטים קטנים יותר. כלומר, ניתן לבנות נוסחת נסיגה עבור זמן ריצת התוכנית, ולפתח את הנוסחה בשיטת הצבה חוזרת. דוגמא חישוב n! : Fact(n) אם = 0 n החזר 1 אחרת אחזר n 1). n Fact( פתרון: c1 n= 0 Tn ( ) = c2 + T( n 1) n> 0 T( n) = c + T( n 1) = c + c + T( n 2) = 2 c + T( n 2) =... = i c + T n i ( ) ( ) התהליך יעצור כאשר נגיע ל-( 0 ) T (קבוע), ולכן תנאי העצירה הינו = 0 i. i = n n Tn ( ) = nc + T(0) = nc + c= On ( ) נציב את התנאי בנוסחה שקיבלנו: עמוד 20

21 תרגיל מטריצה ריבועית A בגודל n על n נקראת ממוינת אם לכל 0>i<n היא מקיימת: A[i,j]<A[i,k] וגם A[j,i]<A[k,i] עבור כל 0>j<k<n (כלומר A ממוינת גם בשורות וגם בעמודות). לחיפוש איבר במטריצה ממוינת נשתמש באלגוריתם הבא: Find( x, A, i1, j1, i2, j2 ) begin if i1>i2 or j1>j2 Return; i1 + i2 i = 2 ; 1j + j2 j = 2 ; if A[i,j]=x then PrintToScreen( ìx was found at:î, i, j ); Stop; if A[i,j]>x then Find( x, A, i1, j1, i-1, j-1 ); Find( x, A, i1, j, i-1, j2 ); Find( x, A, i, j1, i2, j-1 ); else Find( x, A, i1, j+1, i, j2 ); Find( x, A, i+1, j1, i2, j ); Find( x, A, i+1, j+1, i2, j2 ); endif end א. ב. ג. ד. מה הסיבוכיות של האלגוריתם הנ"ל (כפונקציה של n) בקריאה ל- 1-n Find(,x,A,0,0,1-n (, כאשר A היא מטריצה ממוינת ו- x נמצא ב- A? הסבר. כתוב אלגוריתם שימצא את האבר המבוקש במטריצה ממוינת בזמן טוב ככל שתוכל (רמז: ניתן לעשות זאת ב- ).(O(n הסבר נכונות ועמידה בדרישות הסיבוכיות. הראה שהסיבוכיות שבסעיף ב' היא ) c o(n לכל קבוע 1<c. הראה שכל אלגוריתם דטרמיניסטי למציאת איבר במטריצה ממוינת ירוץ ב-( Ω(n זמן. עמוד 21

22 פתרון א. ניתן לראות כי הביטוי הבא מייצג את סיבוכיות האלגוריתם: c1 + 3 T( n/2) n> 1 Tn ( ) = c2 n= 1. c1, c 2 כאשר > 0 n log3 2 ε. f ( n) = const נפתור את הביטוי בעזרת שיטת.master ולכן היא חסומה על ידי מכאן כי ניתן ליישם את המקרה הראשון של משפט,master ולכן סיבוכיות האלגוריתם היא Θ log ( 3 2 ε n ) Find(x, A) 1. i n 1, j 0 ב. האלגוריתם: נניח לצרכי האלגוריתם כי האינדקסים בכל שורה מתחילים מ While Aj [ ][ i] 3. If Aj [ ][ i] 4. If Aj [ ][ i] 5. If Aj [ ][ i] <> xand i 0 and j < n < xthen j j+ 1 > xthen i i 1 = xthen PrintToScreen( ìx was found at:î, i, j); עמוד 22

23 הסבר: אנו מתחילים את סריקת המטריצה מהפינה הימנית העליונה. בכל שלב: אם התא הנוכחי גדול מ- x (המספר המבוקש), סימן ש- x לא נמצא באף עמודה הימנית לעמודה הנוכחית, וכן לא בעמודה הנוכחית, ולכן אנו פונים עמודה אחת שמאלה. אם התא הנוכחי קטן מ- x, סימן ש- x לא נמצא באף אחת מהשורות מעל השורה הנוכחית, וכן לא בשורה הנוכחית, ולכן אנו יורדים שורה אחת מטה. הסריקה נעצרת כשאנו מגיעים לגבולות המטריצה, או שמצאנו את x. ניתוח סיבוכיות: מכיוון שבכל שלב אנו נעים צעד או שמאלה או למטה במטריצה, לאחר לכל היותר מגבולות המטריצה (כי אנו מתחילים בפינה הימנית העליונה, והמטריצה בגודל 2 n.( n n n= 2 צעדים. לפיכך, אם x לא נמצא במטריצה, האלגוריתם יסתיים לאחר (n )O צעדים נצא ג. סיבוכיות סעיף ב' הינה סיבוכיות סעיף ב' חסומה על ידי (n )O, ולכן עלינו להוכיח כי הביטוי שווה ל- 0 כדי להוכיח כי cn 1 lim n n c c.o( n) cn = cn = n lim 1 lim 1 c 0 c 1 n n c> 1 ד. זמן הריצה הוא לא. (n )Ω כי עלינו לבדוק לפחות את כל האלכסון כדי לדעת אם איבר נמצא במטריצה או בכל בדיקה אנו יכולים להגיד במקרה הטוב ביותר האם האיבר לא נמצא בשורה ובעמודה הנוכחיים. מכיוון שיש לנו n עמודות ו- n שורות, שהינם בלתי תלויים, אנו חייבים לבדוק לפחות כל שורה או כל עמודה, ולכן לבצע לפחות n צעדים. לפיכך זמן הריצה הוא.Ω( n) עמוד 23

24 5. מבני נתונים בסיסיים מבנה נתונים זהו אוסף נתונים + פעולות המוגדרות על הנתונים. המשתמש במבנה הנתונים מכיר את הפעולות והשפעתן על הנתונים, אך הוא איננו נדרש להכיר את פרטי המימוש של הפעולות. באופן זה, הקוד של מבנה הנתונים יכול להיות מוחלף מבלי לפגוע בקטעי קוד המשתמשים בו. על ידי כך ניתן בזמן פיתוח של מערכת תוכנה לתכנן מימושים פשוטים ואחר כך להחליפם מחסנית מחסנית היא מבנה נתונים בו "אחרון נכנס ראשון יוצא" Out).(Last In First מחסנית מוגדרת על ידי הפעולות הבאות: תיאור פעולה מחזיר מחסנית S ריקה חדשה create(s) מכניס איבר בעל ערך x למחסנית S push(s, x) מחזיר את האיבר שבראש המחסנית S top(s) מוציא את האיבר שבראש המחסנית S pop(s) מחזיר true אם S ריקה ו- false אחרת. is-empty(s) מימושים אפשריים למחסנית: 1. באמצעות רשימה מקושרת חד כיוונית. אנו מחזיקים מצביע אל ראש הרשימה. כל פעולות ההכנסה וההוצאה מהרשימה מתבצעות על הראש בלבד. 2. מערך בגודל N, עם "מצביע" לראש המבנה. (כאשר מממשים בצורה זו, מקובל להגדיר משתנה מסוג,int השומר את האינדקס של האיבר שבראש המחסנית). המצביע מצביע תמיד על המקום הפנוי הראשון במערך. בתחילת העבודה הוא מצביע אל האיבר הראשון. אנו משתמשים במימוש זה, כאשר ידוע על חסם N על מספר האיברים במבנה. סיבוכיות הזמן של הפעולות המוגדרות על המבנה הינה (1)O. סיבוכיות המקום היא (n )O במימוש עם רשימה, כאשר n הינו מספר האיברים במבנה. במימוש עם מערך, סיבוכיות המקום היא (N )O. עמוד 24

25 5.2. תור תור היא מבנה נתונים בו "ראשון נכנס ראשון יוצא" Out).(First In First תור מוגדר על ידי הפעולות הבאות: תיאור פעולה מחזיר תור ריק create(q) מחזיר את ערך האיבר שבראש התור Q (התור אינו משתנה ( head(q) Q לסוף התור x מכניס איבר עם ערך enqueue(q, (x Q מוציא את האיבר שבראש התור dequeue(q) מחזיר true אם Q ריק ו- false אחרת. is-empty(q) מימושים אפשריים לתור:.1.2 רשימה מקושרת חד כיוונית עם שני מצביעים: head לראש הרשימה ו- tail לזנבה. הכנסות של איברים חדשים מתבצעות בזנב הרשימה והוצאות איברים מתבצעות בראש הרשימה. מערך בגודל N עם שני "מצביעים": head ו- tail, כאשר tail יצביע תמיד על המקום הפנוי הראשון ו- head על המועמד הראשון להוצאה מהמבנה. בתחילת העבודה שניהם מצביעים אל התא הראשון. סיבוכיות הזמן של הפעולות המוגדרות על המבנה הינה (1)O. סיבוכיות המקום היא (n )O במימוש עם רשימה, כאשר n הינו מספר האיברים במבנה. במימוש עם מערך, סיבוכיות המקום היא (N )O דו תור דו תור מוגדר על ידי הפעולות הבאות: תיאור פעולה מחזיר דו תור ריק. create(q) מכניס איבר עם הערך x לראש המבנה. (x insert_head(q, מכניס איבר עם הערך x לזנב המבנה. (x insert_tail(q, מוציא את האיבר שבראש המבנה. delete_head(q) מוציא את האיבר שבזנב המבנה. delete_tail(q) מחזיר את ערך האיבר שבראש המבנה. read_head(q) מחזיר את ערך האיבר שבזנב המבנה. read_tail(q) מחזיר true אם המבנה ריק. is-empty(q) עמוד 25

26 מימושים אפשריים לדו תור: 1. רשימה מקושרת דו כיוונית עם שני מצביעים: head לראש הרשימה ו- tail לזנבה. 2. מערך בגודל N עם שני "מצביעים": head ו- tail. נשתמש במימוש הנ"ל כאשר ידוע חסם N על מספר האיברים במבנה. מילוי המערך יתבצע בצורה ציקלית. מימוש הפעולות הוא בדומה למימושן עבור תור ומחסנית. סיבוכיות הזמן של הפעולות המוגדרות על המבנה הינה (1)O. סיבוכיות המקום היא (n )O במימוש עם רשימה, כאשר n הינו מספר האיברים במבנה. במימוש עם מערך, סיבוכיות המקום היא (N )O מערך מערך מוגדר על ידי הפעולה הבאות: תיאור פעולה מחזיר מערך A של איברים מטיפוס type כאשר האינדקסים הם הקבוצה (I create(type, הסופית I.. A בתוך המערך i I מחזיר את הערך של האיבר עם האינדקס get(a, i). e את ערך הביטוי, i I תחת האינדקס,A מאחסן במערך store(a, i, e) כללים הנשמרים על ידי הפעולות כל הערכים במערך הם מאותו טיפוס, והוא נקבע בהצהרה.(type) הערך המאוחזר לפי אינדקס i, הוא הערך האחרון שנישמר לפי אינדקס i. אחזור לפי אינדקס i מחזיר ערך בלתי מוגדר אם מעולם לא אוחסן ערך לפי אינדקס זה. כל הפעולות מתבצעות ב-( O(1. עמוד 26

27 מערך דו ממדי type A[m][n]; כל שורה A[i] היא מערך חד ממדי באורך n. מערך דו ממדי יכול להיתפס כמטריצה, או כטבלה הנמצאת בזיכרון. אם נניח כי base היא הכתובת של [0][0]A, וכי המימוש של המערך הממדי הוא באזור זיכרון רצוף, אזי הכתובת של השורה A[i] היא. base + i n הכתובת של האיבר A[i][j] היא. base + i n + j מערך רב ממדי Ai [ 3][ i2][ i1] נרחיב את מה שראינו לגבי מערך דו ממדי: An [ במערך תלת ממדי [n1 ][3 ][n2 הכתובת של האיבר מחושבת על ידי הנוסחה n] An [ ]...[ n][ n][ הכתובת של d base + i n n + i n + i באופן דומה, עבור מערך רב ממדי base + i n... n + i n... n i d d 1 1 d 1 d i] Ai [ ]...[ i][ i ][ מחושבת על ידי הנוסחה d : Ai [ ]...[ i][ i ][ i] d התוכנית הבאה מחשבת את הכתובת של addr=i[d]; for (j = d 1; j >= 1; j--) addr = addr * n[j] + i[j]; addr = base + addr; זמן סריקת כל איברי מערך [n An [ ]...[ ][n ][n תלוי בסדר הסריקה. d סריקה לפי סדר האחסון מהירה יותר בגלל לוקליות של גישה לזיכרון. סריקה בה אינדקסים נמוכים נסקרים ראשונים מהירה יותר מסריקה בה אינדקסים גבוהים נסרקים ראשונים. השיפור הוא בקבוע בלבד ואינו מתבטא בסימון O. עמוד 27

28 אתחול מערך בזמן (1)O הבעיה: בייצוג רגיל אתחול מערך דורש זמן.O(n) נרצה למצוא ייצוג של מערך שיאפשר לאתחל מערך בזמן (1)O. בתמורה לשיפור זה נשתמש ביותר זיכרון המציינים המוגדרים מצביעים לאיזור הבטוח ערכים A B C Top נגדיר שלושה מערכים: מערך A הינו מערך הערכים. מערך B הינו מערך מצביעים לאזור הבטוח במערך C. מערך C הוא מערך המציינים המוגדרים. בנוסף נגדיר משתנה top שיכיל את האינדקס של האיבר הראשון במערך C המכיל זבל, וכן משתנה constant אשר יכיל ערך ברירת מחדל עבור התאים השונים. האזור הבטוח במערך C, הוא כל האיברים שהאינדקס שלהם קטן מהאינדקס של.top הקשר בין מערך B למערך C הוא כלהלן: C. הוא מערך שכל תא בו מכיל אינדקס במערך B במידה ונרצה לקבל את האיבר A[i] במערך A, נבדוק ראשית את האיבר.B[i] איבר זה מכיל אינדקס במערך C. אם אינדקס זה קטן מ- top וגדול מ- 0, יתכן שזהו אינדקס חוקי. אם בתא C[B[i]] קיים האינדקס של האיבר ב- B, אזי הערך ב- A הינו ערך חוקי. (נשים לב שללא המשתנה top זה לא היה נכון בכל המקרים). עמוד 28

29 נציג קטעים ממימוש ב- C של מערך כזה. בנספחים ניתן למצוא מימוש מלא של מערך המאותחל ב-( O(1 בשפת ++C: הקוד לאיתור זבל: int is_garbage(int i) return! ( ( B[i] < top && (B[i] >= 0) && (C[B[i]] == i) ); אתחול const) :init(v, top = 0; constant = const; אחזר i) :get(v, if (is_garbage(i)) return constant; else return A[i]; שמור e) :store(v, i, if (is_garbage(i)) C[top] = i; B[i] = top; top += 1; A[i] = e; כל הפעולות מתבצעות בסיבוכיות זמן (1)O. עמוד 29

30 מטריצות דלילות מטריצה דלילה היא מערך דו ממדי עבורו "רוב מוחלט" של האיברים שווה לאפס (או לקבוע c) כלשהו. M,..., 1 M n נגדיר את "הרוב המוחלט" בצורה אסימפטוטית: אם סידרת המטריצות מקיימת שמספר האיברים השונים מקבוע c הוא מסדר גודל של o(m(n)) כאשר m(n) הוא מספר המקומות המקסימאלי במטריצה, M n אזי זוהי סידרה של מטריצות דלילות. למשל: מטריצות אלכסוניות הן מטריצות דלילות. 2 )o. (n הוא c מספר האיברים השונים מקבוע, n במטריצות ריבועיות דלילות מגודל n במקום לשמור את המטריצה כמערך דו ממדי רגיל, נציע פיתרון אחר לייצוג מטריצות דלילות: רשימה של שלשות ( i, j, Aij ) המסודרות בסדר לקסיקוגרפי. דוגמא: ) 1,5,7 ),( 2,10 ),( 0, 0,1,2.( חסרון עיקרי של הייצוג: אין גישה אקראית לאיבר ב-( O(1. יתרונות: חוסך בזיכרון עבור מטריצות דלילות, מאיץ פעולות חיבור וכפל של מטריצות דלילות. n חיבור מטריצות בגודל n לוקח בייצוג רגיל 2 (n )O. עבור מטריצות דלילות זמן החיבור הוא 2.o( n) מטריצת אלכסונים מטריצת אלכסונים היא מטריצה ריבועית שבה לאורך כל אלכסון כל האיברים הם זהים. לדוגמא: , M המסוגל לבצע את הפעולות הבאות: n n נרצה להציע מימוש למבנה נתונים עבור מטריצת אלכסונים. M במטריצה,i j החזר את תוכן האיבר הנמצא באינדקס get(i, (j (x put(i,,j הצב את הערך x ל-[ j. ][]M i עדכן גם את שאר האיברים באלכסון לערך החדש. עמוד 30

31 .O( n) מימוש 1: נממש את מטריצת האלכסונים כמערך דו ממדי. סיבוכיות הזמן של פעולת (j get(i, היא (1)O, וסיבוכיות הזמן של פעולת (k put(i,,j הינה סיבוכיות המקום של מבנה הנתונים הינה 2.O( n) מימוש 2: נשמור איבר אחד בלבד עבור כל אלכסון. סה"כ המאופיין על ידי 2n 1 j, הערך המתאים יאוכסן בתא i איברים. נקצה מערך A בגודל זה. עבור אלכסון, [ + ( 1) ]. A j i n על מנת לשנות את ערך האלכסון, פשוט ניגש אל התא המתאים ונשנה את תוכנו. על מנת להחזיר את תוכן התא, פשוט נחזיר את תוכן התא המתאים לתא במערך A. לפיכך, במימוש זה, סיבוכיות הזמן של פעולת (j get(i, היא (1)O, וסיבוכיות הזמן של פעולת )O. (n סיבוכיות המקום של מבנה הנתונים הינה (1)O. הינה put(i,,j (k מימוש זה עדיף על המימוש הראשון הן בסיבוכיות הזמן שלו והן בסיבוכיות הזיכרון. עמוד 31

32 6. רשימות מקושרות 6.1. הגדרה רשימה מקושרת היא סידרת רשומות, אשר בכל אחת מהן יש שדה המצביע לרשומה הבאה. הגדרה של רשומה אחת ב- C : struct element TYPE info; struct element *next; ; רשימה מקושרת מוגדרת על ידי הפעולות הבאות: פעולה init() find(x, head) delete(t) insert(t, x) תיאור מחזיר רשימה מקושרת חדשה וריקה. סיבוכיות: (1)O. חיפוש האיבר x ברשימה המקושרת. סיבוכיות: n).o( הפרמטר t מצביע לצומת שלפני הצומת אותה רוצים להוציא. מחיקת הצומת הבאה אחרי t סיבוכיות: (1)O. הפרמטר t מצביע לצומת שלאחריו נוסיף צומת חדש. הוספת האיבר x לרשימה המקושרת. סיבוכיות: (1)O. יתרונות בהשוואה למערך: מאפשר הקצאת זיכרון דינאמית. איך צורך להקצות מקום זיכרון רצוף. ניתן להוציא איבר מתוך רשימה מקושרת מבלי להשאיר "חור" כמו במערך, ולכן ניתן לסרוק את כל האיברים בזמן ליניארי. עמוד 32

33 חסרונות ביחס למערך אין גישה לפי אינדקס בזמן (1)O 6.2. רשימות עם כותרת נהוג להגדיר כותרת (header) לרשימה מקושרת. כותרת זוהי רשומה ראשונה ברשימה, אשר לא מהווה איבר ברשימה. תפקידה להצביע בשדה ה- next שלה על האיבר הראשון ברשימה. בעזרת הכותרת ניתן להימנע מהתייחסות מיוחדת למקרים בהם פעולה כלשהי מופעלת על האיבר הראשון. בצורה כזו נוכל לפשט בצורה ניכרת את הפונקציות הפועלות על הרשימה. רשימה עם כותרת חוסכת: טיפול מיוחד ברשימות ריקות. טיפול מיוחד בהכנסת איבר לפני האיבר הראשון / מחיקת האיבר הראשון מימוש רשימה מקושרת נציג כעת מימוש אפשרי של רשימה מקושרת בשפת C. בנספח א' קיים מימוש של רשימה מקושרת מורחבת, הכתוב בשפת ++C. הרשימה היא רשימה עם כותרת, על מנת להימנע ממקרי הקצה. הצהרות שונות: typedef struct element* NODE; typedef int RESULT; #define FAIL 0 #define SUCCESS 1 עמוד 33

34 אתחול רשימה ריקה: /* Creates new list and returns pointer to its header */ NODE init() NODE header; header = (NODE)malloc(sizeof(struct element)); if (header == NULL) return NULL; header->next = NULL; return header; הכנסת איבר לרשימה: /* Insert node to the beginning of the list with the value x */ RESULT insert(node plistheader, TYPE x) NODE newnode; if (plistheader == NULL) return FAIL; newnode = (NODE)malloc(sizeof(struct element)); if (newnode == NULL) return FAIL; newnode->info = x; /* Make the new node point to the first element of the linked list */ newnode->next = plistheader->next; /* Set the first item of the list to be the new node */ plistheader->next = newnode; return SUCCESS; עמוד 34

35 מחיקת איבר מהרשימה: /* The function gets pointer to the node BEFORE the node we want to delete, and deletes the following node */ RESULT remove(node t) NODE temp = t->next; if (t == NULL t->next == NULL) return FAIL; t->next = t->next->next; free(temp); return SUCCESS; מציאת איבר ברשימה: /* Gets pointer to the list header and a requested key, and returns pointer to the node BEFORE the node with that key, or NULL if there is no such node */ NODE find(node plistheader, TYPE x) NODE it; for (it = plistheader; it!= NULL; it = it->next) if (it->next == NULL) return NULL; if (it->next->info == x) break; return it; שחרור כל הזיכרון של הרשימה, בסיום העבודה עימה: /* Gets a list and delete all its data */ void dispose(node plistheader) NODE cur = plistheader, temp; while (cur!= NULL) temp = cur; cur = cur->next; free(temp); עמוד 35

36 6.4. רשימה מקושרת דו כיוונית רשימה מקושרת דו כיוונית מוגדרת בדומה לרשימה מקושרת חד כיוונית, פרט לכך שכל רשומה בה מכילה שתי שדות של מצביעים: מצביע לאיבר הבא (next) ומצביע לאיבר הקודם.(prev) משתמשים במבנה נתונים זה במקרים בהם יש צורך לגשת מרשומה כלשהי במבנה גם קדימה וגם אחורה. כמו כן ניתן לפשט קצת את פעולות הרשימה כאשר אנו משתמשים ברשימה דו כיוונית - למשל, delete ו- find יכולות להחזיר מצביע אל האיבר עצמו, ולא אל האיבר שלפניו (כי אנו מסוגלים כעת בהינתן צומת כלשהו T, לגשת ב-( O(1 אל האיבר שלפניו) רשימה מעגלית רשימה מעגלית מוגדרת כרשימה חד כיוונית, בה האיבר האחרון מצביע אל האיבר הראשון. השימוש ברשימה מעגלית נעשה כאשר מבצעים סיורים ציקליים במבנה. גם ברשימה רגילה ניתן לסייר בצורה ציקלית, אך זה כרוך בטיפול מיוחד עבור המקרה של השגת קצה הרשימה. יתרון בשימוש ברשימות מעגליות הוא ניתן לשרשר רשימות מעגליות בזמן קבוע. הוצאת איבר מרשימה hack בהינתן מצביע t אל איבר ברשימה חד כיוונית, האם ניתן להוציא את האיבר? ניתן על ידי טריק נעתיק את האינפורמציה בתא העוקב לt אל התא t, ונוציא את התא העוקב. לשיטה זו מספר חסרונות: צומת יכול להכיל הרבה מידע, ולכן פעולת העתקה עלולה להיות פעולה ארוכה. יתכן וישנם מצביעים נוספים המצביעים לתא שאנו מוציאים ואין לנו אפשרות לעדכן מצביעים אלו. תזכורת - חוקי XOR a 0 = a a a = 0 a b= b a ( a b) c= a ( b c) עמוד 36

37 6.6. רשימה מקושרת דו כיוונית חסכונית בזיכרון נרצה למצוא דרך ליצור רשימה מקושרת דו כיוונית תוך שימוש במצביע אחד בכל צומת ולא בשני מצביעים. נשתמש בעובדה שנתונים ברשימה למעשה משוכפלים - ה- next של צומת אחד הוא ה- prev X i של צומת אחר. במקום לשמור שדה next או,prev נשמור עבור הצומת את הצירוף הבא: ( i) = i 1 i+ 1 L X X X נביא דוגמא להמחשה. יהיו,N,P,Q R צמתים עוקבים ברשימה מקושרת. N P Q R נניח שיש בידינו את הכתובות,N,,P,Q R על מנת לראות כיצד ניתן לחשב בעזרת כתובת אחת את הכתובת האחרת. נביט בביטוי L( P) Q= N Q Q= N : L( P) Q כלומר בעזרת כתובתו של Q ובעזרת המידע השמור ב- L( P) קיבלנו את הכתובת של N. בצורה דומה מתקיים:. P LQ ( ) = R Temp P P Q Q Temp L( Q) צעד קדימה: נניח שישנם בידינו רק המצביעים,P, Q ונרצה להזיזם קדימה. נבצע את הפעולות הבאות: לפיכך, אם נחזיק כל הזמן שני מצביעים - אחד לאיבר הנוכחי ושני לאיבר הבא/הקודם, נוכל לממש הליכה קדימה ואחורה על הרשימה - ולממש למעשה רשימה מקושרת דו כיוונית. מסקנה: מכיוון שברשימה דו כיוונית הסטנדרטית אנו מצביעים פעמיים על אותה כתובת, "תכונת גודש", אנו מסוגלים לחסוך בזיכרון. עמוד 37

38 7. עצים ועצי חיפוש 7.1. הגדרות גרפים לא מכוונים ( V, גרף לא מכוון הוא זוג (E בת שני איברים מתוך V. קשת מסומנת על ידי המורכב מקבוצת צמתים V ומקבוצת קשתות E. קשת ב- E היא קבוצה.( i, j) m=. n= V, מתקיים: נסמן: E 2 מספר הקשתות m קטן בכל גרף מ-. n דוגמא ל- E,V: V = a, b, c, d, e (, ),(, ),(, ),(, ),(, ),(, ),(, ) E = ab ad bc be cc de ce הקשת ), cc ( נקראת חוג עצמי. גרפים מכוונים E V V ( V, גרף מכוון הוא זוג (E מסלול מכוון בגרף מכוון המורכב מקבוצת צמתים V וקבוצת קשתות ( v v v ),,..., k 1 2 הוא סידרת צמתים כך שלכל זוג צמתים עוקבים. v גרף התשתית של גרף = v 1 k ( V, E) (, ) vi v i + 1 בסדרה, היא קשת ב- E. המסלול נקרא מעגל מכוון, אם מכוון G הוא גרף לא מכוון עם אותם צמתים כמו ב- G, ואותם קשתות כמו ב- G, אך ללא כיוון. עמוד 38

39 עצים מכוונים מקור הוא צומת שאף קשת אינה מצביעה אליו. עץ מכוון הוא גרף מכוון ללא מעגלים (בגרף המקור שלו) ואשר לו מקור אחד בלבד הנקרא שורש. ל- v. u אם קיים מסלול מכוון מצומת u צאצא של v u. צאצא של v אם v אב קדמון של u תת עץ של G ששורשו v הוא תת עץ מכוון שצמתיו הם v עצמו וכל הצאצאים של v, והקשתות שלו הן הקשתות המחברות צמתים אלו ב- G. דרגת צומת v היא מספר הבנים של v. עלה הוא צומת ללא בנים. צומת פנימי הוא צומת שאינו עלה. עומק של צומת v הוא מספר הקשתות משורש העץ אל v. גובה של צומת v הוא מספר הקשתות מv לצאצא הרחוק ביותר של v (עלה). גובה העץ הוא הגובה של שורש. עץ מסודר הוא עץ מכוון שבו הבנים של כל צומת מסודרים (משמאל לימין). כלומר, הסדר בין כל שני בנים קובע עצים שונים (גם אם אלו בנים של אותו האב) עצים בינאריים עץ בינארי הוא עץ שבו לכל צומת שאינה עלה יש בן שמאלי ו/או בן ימני. הגדרה רקורסיבית לעץ בינארי: עץ בינארי הוא מבנה: 1. ריק (ללא צמתים) או 2. מורכב משלושה חלקים: צומת הנקרא שורש, עץ בינארי הנקרא תת עץ שמאלי, ועץ בינארי הנקרא תת עץ ימני. עץ בינארי מלא הוא עץ בינארי בו לכל צומת פנימי 2 בנים. עץ בינארי שלם הוא עץ בינארי מלא בו כל הבנים באותו עומק. עץ בינארי כמעט שלם הוא עץ בינארי שלם שהוצאו ממנו עלים "מצד ימין". עמוד 39

40 תכונות של עצים בינאריים שלמים: יהיה עץ בינארי שלם, בעל n צמתים, L עלים וגובה h, אזי. n i = 1. מספר הצמתים בעומק i הוא 2 i. L = n h = 2. מספר העלים הוא 2 h h h i h+ 1 ni i= 0 i= 0.3 מספר הצמתים בעץ הוא = = n=.. h= log ( n+ 1) הגובה של העץ: h.5 מספר הצמתים הפנימיים הוא L 1. n L= 2 1= ייצוג עצים בינאריים שלמים בעזרת מערך ניתן לייצג עץ בינארי שלם במערך. אחד היתרונות של ייצוג כזה הוא גישה לכל אחד מאיברי העץ בזמן (1)O בהינתן האינדקס שלו. a 1 b 2 3 c d 4 5 e f 6 g 7 h i j k l m n o i נמצא ב- i. 2i נמצא ב- 1 + i הבן השמאלי של צומת הבן הימני של צומת האבא של צומת i נמצא ב- 2 / i o n m l k j i h g f e d c b a עמוד 40

41 סיור בעצים בינאריים נביט בשלושה סוגי סיורים, השונים ביניהם בסדר בו אנו ניגשים לבנים של כל צומת ואל הנתונים בכל צומת. preorder בקר בשורש סייר בתת העץ השמאלי סייר בתת עץ הימני postorder סייר בתת העץ השמאלי סייר בתת עץ הימני בקר בשורש inorder סייר בתת העץ השמאלי בקר בשורש סייר בתת עץ הימני מימוש של צומת של עץ בינארי בשפת C הוא כלהלן: struct node int value; struct node *left, *right; ; typedef struct node* NODE; עמוד 41

42 מימוש לדוגמא של :postorder void postorder(node T) if (T == NULL) return; else postorder(t->left); postorder(t->right); do_operation_on_t; דוגמא לסיור postorder היא חישוב גובה של עץ נתון: int height(node T) int L, R; if (T == NULL) return -1); else L = height(t->left); R = height(t->right); return 1 + max(l, R); דוגמא נוספת: חישוב מספר הצמתים בעץ. int count(node T) if (T == NULL) return 0; return 1 + count(t->left) + count(t->right); עמוד 42

43 n 0 נסמן ב- נוכיח כעת טענות לגבי עצים בינאריים. נשתמש בהצגתן בסימונים הבאים: יהי העץ T. את מספר הצמתים בעץ שאין להם בנים, ב- את מספר הצמתים בעלי בן אחד וב- n 2 את מספר הצמתים בעלי שני בנים. n 1 טענה 1. n 0 עבור כל עץ,T מתקיים = n2 + 1 n= n + n + n n= E+ 1= n + 2n + 1 E = n + 2n הוכחה 1 n 0 = n2 + 1 טענה 2 בעץ יהיו תמיד 1+ n מצביעים ריקים. 2n + n = n + n + 1+ n = n הוכחה 2 עמוד 43

44 7.3. מילון מילון הוא מבנה נתונים המאחסן אוסף של רשומות מהטיפוס: [מפתח, אינפורמציה]. המפתח שונה מרשומה לרשומה. אוסף כל המפתחות האפשריים מסומן ב- U. פעולות המוגדרות על מילון: פעולה תיאור create(d) אתחול, יצירות מילון ריק find(d, (x חיפוש מחזיר מצביע לרשומה בD שמפתחה הוא x או.NULL insert(d,,x info) הוספה הוסף ל- D רשומה שמפתחה x. delete(d, (x הוצאה סלק מ- D רשומה שמפתחה x. כללים: U. שייך לקבוצת המפתחות x כל x מופיע לכל היותר פעם אחת במילון. כאשר מוגדר סדר על U (למשל, כאשר מפתח הוא מספר), מוגדרות פעולות נוספות על מילון: פעולה תיאור min(d) מינימום החזר את המפתח המינימאלי ב- D next(d, (x עוקב החזר מצביע לאיבר במילון D בעל המפתח הקטן ביותר שגדול מ- x. עמוד 44

45 7.4. עצי חיפוש עצי חיפוש היא משפחה של מימושים למבנה הנתונים "מילון" כאשר מוגדר סדר על קבוצת המפתחות U. עץ חיפוש בינארי נשתמש בעץ בינארי מכוון כעץ חיפוש. בכל צומת נאחסן רשומה אחת מתוך מילון (או מפתח ומצביע לאינפורמציה של הרשומה). נשמור על הכלל הבא: עבור צומת כלשהו בעל מפתח x, כל המפתחות בתת העץ השמאלי קטנים מ- x וכל המפתחות בתת העץ הימני גדולים מ- x. אלגוריתם חיפוש איבר (x find(t, אם T ריק, דווח ש- x לא בעץ. יהי y הערך בשורש. אם,x=y החזר מצביע לצומת המחזיק את x. אם,x<y המשך את החיפוש בתת העץ השמאלי. אם x>y המשך את החיפוש בתת העץ הימני אלגוריתם הכנסה חפש את x בעץ החיפוש T. אם x נמצא ב- T, עצור ודווח. יהי V הצומת האחרון במסלול החיפוש של x ויהי y המפתח שנמצא בv. אם,x<y הוסף צומת w עם מפתח x כבן שמאלי של v. אחרת (כאשר,(x>y הוסף צומת w עם מפתח x כבן ימני של v עמוד 45

46 אלגוריתם הוצאה אם v עלה, סלק אותו. אם לv בן יחיד, תן לאבא של v להצביע על הבן. אחרת: יהי w הצומת העוקב ל- v בסדר inorder (הצומת המתקבל על ידי פניה אחת ימינה ואחר כך כל הדרך שמאלה). שים בצומת v את המפתח (ושדות המידע) של w. כעת יש לv לכל היותר בן אחד. המשך בצעד 1 או 2 כנדרש זמנים זמן חיפוש/הכנסה/הוצאה הוא ליניארי בגובה העץ. במקרה שיש בידינו עץ שלם, גובה העץ הוא. log n במקרה שהעץ נראה כמו רשימה ליניארית, 1 n. =h ניתן להוכיח כי הגובה הממוצע של עץ בינארי הוא.O(log n) סיור Inorder ועץ חיפוש בינארי קבלת סדרה ממוינת של המפתחות בעץ: אם נתון לנו עץ חיפוש בינארי, נוכל לקבל סדרה ממוינת של המפתחות בעץ בזמן,O(n) וזאת על ידי סריקת העץ ב- inorder. במהלך הסריקה, כאשר אנו בודקים את ערך הצומת, אנו מדפיסים אותו. מימוש פעולת המילון "עוקב": על מנת לממש על עץ חיפוש בינארי את הפעולה "עוקב" המוגדרת עבור מילון, כל שעלינו לעשות הוא למצוא את האיבר שנמצא אחרי הצומת המבוקש ב- inorder. זאת על פי הטענה שאנו מקבלים את האיברים בסדר ממוין כאשר אנו מבצעים סריקת.inorder עמוד 46

47 .7.5 עץ AVL הגדרה משפחה של עצים תקרא מאוזנת אם (n ht ( ) = O(log הגדרה. עץ AVL הוא עץ חיפוש בינארי, שבו לכל צומת v התכונה: 1 right) h(v left) h(v עצי פיבונצי נגדיר כעת משפחה נוספת של עצים. משפחה זו משמשת בהוכחת חסם הגובה על עצי.AVL עצי פיבונצי מוגדרים בצורה הבאה: F0 F1 F2 F3 טענה 1.h גובה F h לכל h, לעץ טענה 2. F = 1+ F + F F h h 1 h 2 h 1 מתקיים: עמוד 47

48 טענה 3. T F h יהי T עץ AVL בעל גובה h, אזי הערה: ניתן לראות לפי הגדרה כי עצי פיבונצי הם עצי.AVL טענה זו אומרת כי עצי פיבונצי הם עצי ה- AVL הגדלים לגובה במהירות הגדולה ביותר מבין כל עצי ה- AVL ומכאן המוטיבציה להוכיח טענה על עצי AVL בעזרתם. טענה 4 n i F = n + i i 3 1 F i לעץ פיבונצי יש צמתים, כאשר הוא המספר הפיבונצי ה- i. טענה 5. h= יהי T עץ AVL בן n צמתים, אזי (n O(log איזון בעץ AVL זמן החיפוש בעץ AVL הוא הנותר יהיה עץ.AVL (n.o(log נצטרך לדאוג שאחרי הכנסה או הוצאה של איברים מהעץ, העץ תיקון העץ לאחר הכנסה או הוצאה של איבר, כך שבסוף יתקבל שוב עץ,AVL נקרא גלגול. עבור צומת v בעץ בינארי נסמן: h () L v h () R v הוא גובה תת העץ הימני של v. הוא גובה תת העץ השמאלי של v.. BF() v = h() v h() v L R גורם האיזון Factor) (Balance מוגדר כהפרש הגבהים: עמוד 48

49 אבחנות: הצמתים היחידים שאולי הופר בהם האיזון הם הצמתים לאורך מסלול הכנסה/הוצאה. אם עבור צומת v במסלול הנ"ל גובה העץ ששורשו v לא השתנה, אזי גורמי האיזון בצמתים שמעליו במסלול לא השתנו. אם גורם האיזון הופך ל- 2 או ל -2, אזי יש לבצע גלגול על מנת שהעץ יחזור להיות עץ.AVL.4 גלגול - פעולה המתבצעת על צומת שהופר בו האיזון על מנת להחזירו לתחום המותר.[ 1, 0,1].5 גורם האיזון לא יכול להיות גדול מ- 2 בערכו המוחלט, כי בכל הכנסה או הוצאה הוא משתנה ב- 1 לכל היותר. אלגוריתם לתיקון גורמי האיזון לאחר הכנסה/הוצאה מכל צומת v לאורך המסלול החל מלמטה ועד השורש בצע: עדכן את.BF(v) אם גובה תת העץ אשר v שורשו לא השתנה, סיים. אם אם גובה תת העץ השתנה ו-( BF(v תקין, המשך כלפי מעלה. BF(v) = 2 - בצע גלגול והמשך כלפי מעלה. סוגי הגלגולים הדרך לתקן חוסר איזון בצומת, תלוי בצורה בה האיזון מופר. ניתן לסווג חוזר איזון בארבע קטגוריות שונות המכסות את כל המקרים. הגלגול המתאים בבן הימני v בבן השמאלי v בשורש v BF(v)=2 BF(v)=2 L L R BF(v ) 0 LL BF(v ) = 1 LR L BF(v)=-2 BF(v R ) 0 RR BF(v)=-2 BF(v R ) = 1 RL עמוד 49

50 גלגול LL לפני הכנסת v, גובה העץ הוא 2+h. הוכנס צומת v A L שהגדיל את גובל לשורש. לh+1. גלגול LL יעביר את A +1 B +2 0 A +1 B R AL h AR v גובה העץ לאחר הגלגול הוא 2+h, כמו לפני ההכנסה. A 0 השורש מאוזן. (1)O. מצביעים ולכן זמן הגלגול הוא (1)O שינינו h B 0 A L v A R B R גלגול LR B L הוכנס איבר ל שגרם לו להעלות את +1 C +2 גובהו ל- h. 0 A -1 h 0 B +1 C R A L BL h-1 BR v B גובה העץ אחרי הגלגול הוא 2+h, כמו לפני ההכנסה. 0 A -1 C שינינו (1)O מצביעים ולכן זמן הגלגול הוא.O(1) A L h BL h-1 B R CR h v באופן סימטרי, אנו מבצעים את שני סוגי הגלגולים האחרים. עמוד 50

51 .7.6 עצי 3-2 תזכורת משפחת עצים נקראת מאוזנת אם n). H ( T) = O(log עצי AVL הם עצים מאוזנים. עצי 2-3 הם דוגמא נוספת לעצים מאוזנים. הגדרה עץ 2-3 הוא עץ בו כל העלים נמצאים באותה רמה ולכל צומת פנימי 2 או 3 בנים. דוגמאות גובה עצי 2-3 מספר העלים K בעץ 2-3 מקיים h 3 L 2, כאשר h הוא גובה העץ. החסם התחתון מתקבל כאשר אנו מביטים בעץ הבינארי השלם הנוצר על ידי סילוק כל ילד שלישי מעץ 2-3. החסם העליון מתקבל כאשר אנו מביטים בעץ הטרינארי הנוצר על ידי הוספת ילד שלישי לעץ 2-3 בכל מקום בו חסר ילד. גובה העץ מקיים:. h=θ ( log L) כלומר:, log h L h log L 3 2 עמוד 51

52 עצי 2-3 כמבני נתונים כל עלה מכיל מפתח ורשומה. 2 בנים, ויש לו 1 d אינדקסים המשתמשים לחיפוש הרשומה הנחוצה. לכל צומת פנימי יש 3 d בצומת פנימי בעל שני בנים רשום אינדקס בודד הגדול ממש מהמפתח המקסימאלי בתת העץ ששורשו הוא הבן הראשון וכן קטן או שווה למפתח המינימאלי בתת בעץ ששורשו הוא הבן השני. בצומת פנימי בעל שלושה בנים רשומים שני אינדקסים. האינדקס הראשון גדול ממש מהמפתחות בעץ הראשון וקטן שווה מהמפתחות בעץ השני. האינדקס השני גדול ממש מהמפתחות בעץ השני וקטן או שווה מהמפתחות בעץ השלישי. חיפוש מפתח k בעץ 2-3 יהי v השורש של העץ. אם v עלה, בדוק אם k נמצא בצומת v. k 1 יהי האינדקס המינימאלי בצומת v. k < k 1 אם המשך את החיפוש בבן הראשון של v. אחרת, אם לv רק שני בנים או ש- k קטן מהמפתח השני של v, המשך את החיפוש בבן השני של v. אחרת, המשך את החיפוש בבן השלישי של v. הוספת מפתח k לעץ 2-3 חפש את k בעץ T. אם k נמצא, סיים. אם k אינו ב- T, יהי f הצומת האחרון, שאינו עלה, במסלול החיפוש. צור עלה חדש בעל המפתח k והוסף אותו כבן ל- f, תוך שמירת הסדר בין הבנים של f (יתכן כעת כי ל- f ארבעה בנים). הוסף ל- f אינדקס נוסף בהתאם לכללי עץ 2-3. v f אם ל- v ארבעה בנים, פצל את v לשני צמתים,v1, וחבר אותם כבנים לאב f של הצומת v2 v, תוך שמירה על סדר האינדקסים הנכון. חזור לצעד 5. אם v הוא שורש צור צומת f אשר בניו הם הצמתים,v1 וסיים. אם ל- v שלושה בנים סיים. v עמוד 52

53 המחשה פיצול צומת בעץ 2-3 בעלת ארבעה בנים לשני צמתים: k 2 kkk v v v v k 1 v v 1 2 k 3 v v 3 4 תכונות תהליך ההוספה שינויים מתבצעים רק על המסלול מהשורש לעלה שהוסף. בזמן פיצול של צומת, הצמתים החדשים הם בעומק שווה לצומת שפוצל. בפיצול השורש נוצר צומת חדש שמגדיל ב- 1 את העומק של כל הצמתים. מסקנה לאחר הוספה של עלה, כל העלים באותו עומק ולכל צומת פנימי 2-3 בנים. אלגוריתם להוצאת מפתח k מעץ 2-3 חפש את k בעץ. אם k לא נמצא בעץ, סיים. יהי l העלה שערכו k ויהי f אביו. סלק את l מהעץ. v f אם v הוא שורש ולו בן בודד, סלק את v וסיים. אם ל- v נותרו שני בנים, סיים (המשך אם ל- v נותר רק בן בודד). מקרה א': אם ל- v יש אח ולו שלושה בנים, שאל בן מהאח (תקן את ערכי ההורים) וסיים. מקרה ב': אם לכל אח רק שני בנים, אחד עם v עם אח קרוב לv, ועדכן את המפתחות בצומת שנוצר. יהי f ההורה של v. חזור לצעד עמוד 53

54 תרגיל יהי T עץ 3-2 ויהי T העץ המתקבל מהוספת הצומת x ל- T והוצאתו. נניח כי בהוצאת x לא היה צורך לבצע איחודים. האם? T = T תשובה לא בהכרח. הרעיון: יתכן כי ביצענו פיצול בהכנסה, אולם בהוצאה, במקום לבצע איחוד, ביצענו הלוואה מאח. דוגמא: 20 7, 10 30, נוסיף 8: 8, , עמוד 54

55 נמחק את 8, ונבצע הלוואה מאח: 10, עמוד 55

56 .7.7 עצי B+ הגדרה.1.2 עץ +B מדרגה m הוא עץ המקיים את התכונות הבאות: כל הערכים נמצאים בעלים, כל העלים באותה רמה. לכל צומת פנימי, פרט אולי לשורש, יש c בנים כאשר מספר הבנים הוא m/2. לשורש c m. 2 c m.3 לצומת פנימי בעל c בנים יש 1-c אינדקסים ממוינים לפי גודלם. כל המפתחות הנמצאים בתת העץ ה- i קטנים מהאינדקס ה- i וגדולים או שווים לאינדקס ה- i-1. כל המפתחות הנמצאים בתת העץ הימני ביותר גדולים או שווים לאינדקס האחרון. פעולות פעולות החיפוש, ההכנסה וההוצאה נעשים כמו בעץ 2-3. פעולת הכנסה: נמצא מקום להכנסת האיבר החדש ברמה התחתונה. נוסיף את האיבר לעץ יחד עם המפתח המתאים לאביו. אם דרגת צומת האב תקינה, נסיים. אחרת (הדרגה היא 1+m), נפצל את צומת האב לשני צמתים, כך שהשמאלי מביניהם m + 1 הצמתים הראשונים, והימני את יקבל את 2 את המפתח k m m + 1 האחרונים. 2 נכניס לאביו של הצומת המפוצל כדי להפריד בין הבנים החדשים. נמשיך באופן רקורסיבי כלפי מעלה. אם פיצלנו את שורש העץ, נוסיף שורש חדש. עמוד 56

57 פעולת הוצאה: 1. נמצא את האיבר שרוצים להוציא ברמה התחתונה. 2. נמחק את האיבר, ביחד עם המפתח המתאים מאביו. 3. אם דרגת צומת האב תקינה, נסיים. ( קיימים שני מקרים: m אחרת (הדרגה היא 1 2 m בנים, נלווה בן ימני ביותר אם לאח השמאלי (או הימני) של צומת האב יש יותר מ- 2 (שמאלי ביותר) מהאח ונסיים). אחרת (לאח יש m בנים בדיוק) נאחד את הצומת עם אחיו ונמשיך באופן רקורסיבי כלפי 2 מעלה. אם נגיע למצב שלשורש נותר בן יחיד, נבטל את השורש. עמוד 57

58 7.8. מידע נוסף בעצי חיפוש בשימושים רבים של עצי חיפוש, נרצה לשמור אינפורמציה נוספת בכל צומת, מלבד הנתונים המאוחסנים בה. על ידי הוספת אינפורמציה, נוכל להשיג האצה של פעולות נוספות הנדרשות מעצי חיפוש. נביט כעת מספר דוגמאות למידע נוסף שאפשר לשמור בעץ ובשימושים שנעשה במידע זה. עץ דרגות Tree) (Rank הגדרה האינדקס (rank) של מספר x בקבוצה S הוא מקומו בסדרה ממוינת של איברי S. מטרה נרצה לממש עץ חיפוש התומך במציאת האינדקס של איבר x. הגדרה עץ דרגות Tree) (Rank הוא עץ בו בכל צומת v נשמרים מספר הצמתים בתת העץ ששורשו v. טענה בעזרת עץ דרגות, ניתן לממש עץ חיפוש התומך בפעולה "מציאת האינדקס של איבר x" בזמן.O(height) מימוש: נחפש את האיבר x. נספור את הצמתים על מסלול החיפוש ל- x הקטנים מ- x, בתוספת הערכים השמורים בבניהם השמאליים. כאשר נגיע אל x יהיה בידינו האינדקס שלו. מסקנה בעץ דרגות מציאת ה- rank דורשת זמן.O(height) עמוד 58

59 דוגמא נרצה לממש עץ חיפוש התומך במציאת סכום האיברים בעץ הקטנים מ- x בזמן.O(height) פתרון נשמור בכל צומת v את סכום ערכי הצמתים בתת העץ ששורשו v. נסמן מספר זה ב-( S(v. נסכם את הערכים על מסלול החיפוש ל- x הקטנים מ- x בתוספת הערכים השמורים בבניהם השמאליים. זמן הריצה של פתרון זה הוא.O(height) עץ דרגות מאוזן נרצה לממש עץ חיפוש מאוזן התומך במציאת האינדקס (rank) של איבר x בזמן.O(log(n)) על מנת לעשות זאת, נוכל להשתמש באחד מסוגי העצים המאוזנים שראינו קודם, למשל, עץ.AVL בזמן ביצוע הגלגולים של עץ ה- AVL, נזכור שיש לעדכן גם את השדה הנוסף בכל צומת. השוואה בין עצי 2-3 ועצי AVL שני סוגי העצים תומכים בפעולות המילון בזמן.O(log(n)) בעץ 2-3 רשומות נשמרות רק בעלים. בעץ AVL רשומות נשמרות גם בצמתים הפנימיים וגם בעלים. בדרך כלל הבחירה בין שימוש בעצי AVL לשימוש בעצי 2-3 איננה עקרונית. (שניהם מסובכים ועושים כאב ראש למי שמתכנת אותם). עמוד 59

60 תרגיל נתון עץ AVL שבו כל צמת מכיל מפתח ומצביעים לשני בנים. כל מפתח מופיע בעץ פעם אחת לכל היותר. תארו אלגוריתם המממש את הפעולה הבאה: Distance (Root, LeftKey, RightKey) כאשר RightKey ו- LeftKey הם שני מפתחות המקיימים.LeftKey < RightKey אם לפחות אחד משני המפתחות אינו בעץ, השגרה מחזירה 1-. אחרת היא מחזירה את המרחק בקשתות בין שני הצמתים בעץ המאחסנים את RightKey ו-.LeftKey (כלומר את מספר הקשתות שבמסלול הקצר ביותר ביניהם). סיבוכיות הזמן הנדרשת (n O(log במקרה הגרוע ביותר, כאשר n הוא מספר המפתחות המאוחסנים בעץ. פתרון האלגוריתם Distance (Root, LeftKey, RightKey) חפש את RightKey ו- LeftKey בעץ. אם אחד מהם לא נמצא החזר 1-. p=root כל עוד לא מתקיים (LeftKey<P<RightKey) אם p>leftkey וגם p>rightkey אז p=p->leftson אם p<leftkey וגם p<rightkey אז p=p->rightson o o p1=p, h1=0 כל עוד p1!=leftkey p1=p1->leftson p1>leftkey אם o o o אם p1=p1->rightson p1<leftkey h1++ p2=p,h2=0 כל עוד p2!=rightkey p1>rightkey אם o אם o p1=p1->leftson p1=p1->rightson p1<rightkey h2++ o החזר h1+h2+1 עמוד 60

61 רעיון האלגוריתם אנו מוצאים את האבא המשותף של שני הצמתים המבוקשים (קיים רק אחד כזה), וממנו אנו יורדים אל כל אחד מהצמתים, תוך כדי ספירת מספר הצמתים בינו לבן האב. חיבור שני סכומים אלו נותן לנו את המרחק בין הצמתים. סיבוכיות אנו מטיילים מספר פעמים קבוע (4 פעמים) על העץ. מכיוון שהעץ הוא עץ מאוזן, גובהו חסום על ידי (n,o(log ולכן זוהי גם סיבוכיות האלגוריתם. תרגיל נתון עץ 2-3 עם ערכים בעלים: 6, 11 4, 5 7, 8 13, insert(18), insert(1), delete(13) על העץ מופעלת סדרת הפעולות הבאה (משמאל לימין): צייר את העץ המתקבל לאחר כל פעולה. עצים) ולא את שלבי הביניים. יש לצייר רק את העצים המתקבלים בתום הפעולות (סה"כ 3 עמוד 61

62 פתרון insert(18) , 5 7, insert(1) 11 4, , delete(13) , 8 15, עמוד 62

63 8. רשימת דילוגים 8.1. רשימת דילוגים רנדומאלית עבור עצים מאוזנים, מימוש פעולות המילון נעשה בזמן (n O(log במקרה הגרוע ביותר. מימוש הפעולות אינו טריוויאלי, במיוחד כאשר יש צורך לתמוך גם בפעולות הדורשות לשמור בכל צומת אינפורמציה ייחודית (כמו (rank ולעדכן אותה. נציג מבנה נתונים בעל מימוש פשוט יותר, שלא דורש איזונים לאחר הכנסה/הוצאה. בתמורה לכך, ביצוע פעולות המילון יעשה בזמן n) O(log בממוצע. ראינו כבר שעצי חיפוש ללא פעולות איזון יכולים לשמש למימוש פעולות המילון בזמן (n O(log בממוצע. בניתוח שעשינו הנחנו שהוכנסו n איברים לעץ, לפיכך קיימות!n פרמוטציות להכנסתם. הממוצע של גובה!n העצים שנוצרו הוא.O(log n) בניתוח זה ישנן מספר בעיות. ראשית, בדרך כלל ההסתברות להופעת פרמוטציה בקלט איננה אחידה. שנית, מבנה הנתונים שנוצר תלוי בסדר הכנסת הנתונים. אדם/תהליך המחבל במערכת יכול להכניס סדרת נתונים כך שהפעולות יבוצעו בזמן האיטי ביותר. במבנה שנציג - רשימת דילוגים, בעיות אלו נפתרות. הפעולות וזמן ביצוען תלוי בהגרלות שעושה המחשבים, ולא בסדר הכנסת הנתונים. הממוצע מחושב לפי ההגרלות ולא לפי הנחות על ההסתברות של הקלטים. אלגוריתם כזה נקרא אלגוריתם רנדומאלי. נביט ברעיון של מבנה הנתונים. ניקח רשימה ממוינת של איברים. חיפוש איבר בסוף הרשימה הוא יקר (מבחינת פעולות) כדי לזרז את החיפוש (פי 2), נוסיף מדריך - תת רשימה של כל איבר שני. ממדריך זה יהיה אפשר להגיע לאיבר המתאים ברשימה הראשונה עמוד 63

64 כדי לזרז את החיפוש במדריך נוסיף רמה נוספת: כך נמשיך עד לרמה n log בה יהיה איבר בודד. כדי לפשט את האלגוריתמים המממשים רשימת דילוגים, נהוג להוסיף צומת דמה בתחילת כל שורה ברשימת הדילוגים, וכן צומת אחת בסוף רשימת הדילוגים, שכל השורות יסתיימו בה אורך מסלול החיפוש הוא במהלך החיפוש, במעבר מרמה לרמה אנו עוברים על פני שני מצביעים לכל היותר. לפיכך, אורך המסלול. 2logn מספר הצמתים הכולל אינו עולה על. 2n פעולת חיפוש ברשימת דילוגים (id) p מקבל את כתובתו של הצומת העליון השמאלי ביותר. כל עוד לא הגעת אל תחתית רשימת הדילוגים או לא הגעת אל סופה, בצע: כל עוד p.right.id id בצע: אם לא הגעת אל תחתית הרשימה, בצע. p p.right. p p.down אם p.id = id החזר את p. אחרת החזר: "האיבר המבוקש איננו ברשימת הדילוגים" עמוד 64

65 פעולת ההכנסה ברשימת דילוגים חפש את k. אם k נמצא, סיים. שמור מצביע לצומת הימני ביותר בכל רמה במסלול החיפוש. הוסף צומת חדש ברמה התחתונה ביותר וקבע את המפתח להיות k. לפי סדר הרמות מלמטה למעלה: הגרל מטבע.toss() אם יוצא 0: הוסף צומת חדש מעל הרמה הנוכחית וקבע את המפתח בו להיות k. אם יוצא 1: עצור. אם ברמה העליונה הוגרל 0, הוסף רמה חדשה פעולת הוצאה מרשימת דילוגים מצא את האיבר בעל המפתח k. הוצא איבר זה מכל הרמות בהן הוא מופיע..1.2 מספר הצמתים ברשימת דילוגים מספר הצמתים הממוצע ברשימת דילוגים הוא 2n, כאשר n הוא מספר המפתחות במבנה. אורך מסלול החיפוש הממוצע. L 2log n+ 2 2 האורך הממוצע L של מסלול חיפוש ברשימת דילוגים עם n מפתחות מקיים זמן ביצוע הפעולות חיפוש, הכנסה, והוצאה מרשימת דילוגים נעשים בזמן ממוצע (n O(log כיוון שבכל צעד על מסלול החיפוש מתבצעים (1)O צעדים. עמוד 65

66 י רשימת דילוגים דטרמיניסטית כאשר אנו משתמשים ברשימת הדילוגים הרנדומאלית, הפעולות וזמן ביצוען תלוי בהגרלות שעושה המחשבים, ולא בסדר הכנסת הנתונים. בממוצע אנו מקבלים זמני ביצוע פעולות של.O(log n) אולם, רשימת הדילוגים הרנדומאלית מתבססת על כך שמנוע יצירת המספרים האקראיים של המחשב מתנהג "כמצופה". במידה והמצב הוא לא כזה, עשויה רשימת הדילוגים להראות כרשימה מקושרת פשוטה, וסיבוכיות הפעולות עליה יהיו ליניאריות במקרה הגרוע בהתאם. נרצה למצוא דרך להשתמש ברשימת דילוגים, בעזרתה נוכל להגיע לזמני ביצוע פעולות של במקרה הגרוע. כידוע - קיימים מבני נתונים, עצי חיפוש, המאפשרים לממש מילון ב- O(log n) - עצי,AVL עצי,2-3 O(log n) עצי red-black ועוד. אנו מחפשים אלטרנטיבה למבנים אלו עקב המימוש המסובך שלהם. נציג פתרון המשתמש ברשימת דילוגים בהדרגתיות, תוך כדי הצגת הדרך כיצד פותח הפיתרון הסופי בו נשתמש. נקודת ההתחלה הגדרה רשימת דילוגים L תכונה רשימת דילוגים מאוזנת בשלמות אם היא מקיימת את התנאים הבאים: 1. L היא רשימת דילוגים. 2. עבור k טבעי קבוע כלשהו, מתקיים כי כל איבר k -י בגובה h ברשימת הדילוגים מופיע גם בגובה 1+h ברשימת הדילוגים. עבור רשימת דילוגים מאוזנת בשלמות, פעולת חיפוש מתבצעת בזמן לוגריתמי. אם זאת, איננו יכולים לבצע פעולות הכנסה או הוצאה על הרשימה, מבלי לפגוע בהיותה רשימת דילוגים מאוזנת בשלמות. לפיכך, נחליש מעט את הדרישה השנייה, על ידי שינוי הביטוי "עבור כל איבר ". k עמוד 66

עצי 2-3 תזכורת: בנים. דוגמאות: Chapter 19: B trees ( ) Chapter 15: Augmenting data structures ( )

עצי 2-3 תזכורת: בנים. דוגמאות: Chapter 19: B trees ( ) Chapter 15: Augmenting data structures ( ) עצים מאוזנים Lecture 5 of Geiger & Itai s slide brochure www.cs.technion.ac.il/~dang/courseds תזכורת: משפחת עצים נקראת מאוזנת אם ( h. = (log עצי -3 ועצי דרגות עצי AVL הם עצים מאוזנים. עצי 3- מהווים דוגמא

Διαβάστε περισσότερα

משוואות רקורסיביות רקורסיה זו משוואה או אי שוויון אשר מתארת פונקציה בעזרת ערכי הפונקציה על ארגומנטים קטנים. למשל: יונתן יניב, דוד וייץ

משוואות רקורסיביות רקורסיה זו משוואה או אי שוויון אשר מתארת פונקציה בעזרת ערכי הפונקציה על ארגומנטים קטנים. למשל: יונתן יניב, דוד וייץ משוואות רקורסיביות הגדרה: רקורסיה זו משוואה או אי שוויון אשר מתארת פונקציה בעזרת ערכי הפונקציה על ארגומנטים קטנים למשל: T = Θ 1 if = 1 T + Θ if > 1 יונתן יניב, דוד וייץ 1 דוגמא נסתכל על האלגוריתם הבא למציאת

Διαβάστε περισσότερα

פתרון תרגיל מרחבים וקטורים. x = s t ולכן. ur uur נסמן, ur uur לכן U הוא. ur uur. ur uur

פתרון תרגיל מרחבים וקטורים. x = s t ולכן. ur uur נסמן, ur uur לכן U הוא. ur uur. ur uur פתרון תרגיל --- 5 מרחבים וקטורים דוגמאות למרחבים וקטורים שונים מושגים בסיסיים: תת מרחב צירוף לינארי x+ y+ z = : R ) בכל סעיף בדקו האם הוא תת מרחב של א } = z = {( x y z) R x+ y+ הוא אוסף הפתרונות של המערכת

Διαβάστε περισσότερα

מבני נתונים ואלגוריתמים תרגול #3 נושאים: תור קדימויות/ערימה, עצים

מבני נתונים ואלגוריתמים תרגול #3 נושאים: תור קדימויות/ערימה, עצים מבני נתונים ואלגוריתמים תרגול #3 נושאים: תור קדימויות/ערימה, עצים חזרה מבנה נתונים אמצעי לאחסון נתונים במחשב. יש הרבה סוגים שונים, וצריך להשתמש במבנה שהכי מתאים לבעיה שלנו מבחינת שימוש בנתונים הוספה, מחיקה

Διαβάστε περισσότερα

חורף תש''ע פתרון בחינה סופית מועד א'

חורף תש''ע פתרון בחינה סופית מועד א' מד''ח 4 - חורף תש''ע פתרון בחינה סופית מועד א' ( u) u u u < < שאלה : נתונה המד''ח הבאה: א) ב) ג) לכל אחד מן התנאים המצורפים בדקו האם קיים פתרון יחיד אינסוף פתרונות או אף פתרון אם קיים פתרון אחד או יותר

Διαβάστε περισσότερα

Nir Adar

Nir Adar גירסה 28.6.2003-1.00 רשימת דילוגים מסמך זה הורד מהאתר. אין להפיץ מסמך זה במדיה כלשהי, ללא אישור מפורש מאת המחבר. מחבר המסמך איננו אחראי לכל נזק, ישיר או עקיף, שיגרם עקב השימוש במידע המופיע במסמך, וכן לנכונות

Διαβάστε περισσότερα

אסימפטוטיים תוכנית הקורס עצי AVL עצי 2-3 עצי דרגות סיבוכיות משוערכת מיון מיון שימושים: גרפים איסוף אשפה

אסימפטוטיים תוכנית הקורס עצי AVL עצי 2-3 עצי דרגות סיבוכיות משוערכת מיון מיון שימושים: גרפים איסוף אשפה תוכנית הקורס cs, Technion 2..3.4 מבני נתונים בסיסיים וסימונים אסימפטוטיים מערכים ורשימות מקושרות עצים ועצי חיפוש עצי AVL עצי 2-3 עצי דרגות.5 רשימות דילוגים סיבוכיות משוערכת.6.7.8.9.0..3.4 מטרת הקורס: מבני

Διαβάστε περισσότερα

ל הזכויות שמורות לדפנה וסטרייך

ל הזכויות שמורות לדפנה וסטרייך מרובע שכל זוג צלעות נגדיות בו שוות זו לזו נקרא h באיור שלעיל, הצלעות ו- הן צלעות נגדיות ומתקיים, וכן הצלעות ו- הן צלעות נגדיות ומתקיים. תכונות ה כל שתי זוויות נגדיות שוות זו לזו. 1. כל שתי צלעות נגדיות

Διαβάστε περισσότερα

מבני נתונים ויעילות אלגוריתמים

מבני נתונים ויעילות אלגוריתמים מבני נתונים ויעילות אלגוריתמים (8..05). טענה אודות סדר גודל. log טענה: מתקיים Θ(log) (!) = הוכחה: ברור שמתקיים: 3 4... 4 4 4... 43 פעמים במילים אחרות:! נוציא לוגריתם משני האגפים: log(!) log( ) log(a b

Διαβάστε περισσότερα

פתרון תרגיל 8. מרחבים וקטורים פרישה, תלות \ אי-תלות לינארית, בסיס ומימד ... ( ) ( ) ( ) = L. uuruuruur. { v,v,v ( ) ( ) ( ) ( )

פתרון תרגיל 8. מרחבים וקטורים פרישה, תלות \ אי-תלות לינארית, בסיס ומימד ... ( ) ( ) ( ) = L. uuruuruur. { v,v,v ( ) ( ) ( ) ( ) פתרון תרגיל 8. מרחבים וקטורים פרישה, תלות \ אי-תלות לינארית, בסיס ומימד a d U c M ( יהי b (R) a b e ל (R M ( (אין צורך להוכיח). מצאו קבוצה פורשת ל. U בדקו ש - U מהווה תת מרחב ש a d U M (R) Sp,,, c a e

Διαβάστε περισσότερα

תורת הגרפים - סימונים

תורת הגרפים - סימונים תורת הגרפים - סימונים.n = V,m = E בהינתן גרף,G = V,E נסמן: בתוך סימוני ה O,o,Ω,ω,Θ נרשה לעצמנו אף להיפטר מהערך המוחלט.. E V,O V + E כלומר, O V + E נכתוב במקום אם כי בכל מקרה אחר נכתוב או קשת של גרף לא

Διαβάστε περισσότερα

שדות תזכורת: פולינום ממעלה 2 או 3 מעל שדה הוא פריק אם ורק אם יש לו שורש בשדה. שקיימים 5 מספרים שלמים שונים , ראשוני. שעבורם

שדות תזכורת: פולינום ממעלה 2 או 3 מעל שדה הוא פריק אם ורק אם יש לו שורש בשדה. שקיימים 5 מספרים שלמים שונים , ראשוני. שעבורם תזכורת: פולינום ממעלה או מעל שדה הוא פריק אם ורק אם יש לו שורש בשדה p f ( m i ) = p m1 m5 תרגיל: נתון עבור x] f ( x) Z[ ראשוני שקיימים 5 מספרים שלמים שונים שעבורם p x f ( x ) f ( ) = נניח בשלילה ש הוא

Διαβάστε περισσότερα

צעד ראשון להצטיינות מבוא: קבוצות מיוחדות של מספרים ממשיים

צעד ראשון להצטיינות מבוא: קבוצות מיוחדות של מספרים ממשיים מבוא: קבוצות מיוחדות של מספרים ממשיים קבוצות של מספרים ממשיים צעד ראשון להצטיינות קבוצה היא אוסף של עצמים הנקראים האיברים של הקבוצה אנו נתמקד בקבוצות של מספרים ממשיים בדרך כלל מסמנים את הקבוצה באות גדולה

Διαβάστε περισσότερα

(2) מיונים השאלות. .0 left right n 1. void Sort(int A[], int left, int right) { int p;

(2) מיונים השאלות. .0 left right n 1. void Sort(int A[], int left, int right) { int p; מבני נתונים פתרונות לסט שאלות דומה לשאלות בנושאים () זמני ריצה של פונקציות רקורסיביות () מיונים השאלות פתרו את נוסחאות הנסיגה בסעיפים א-ג על ידי הצבה חוזרת T() כאשר = T() = T( ) + log T() = T() כאשר =

Διαβάστε περισσότερα

תרגול מס' 6 פתרון מערכת משוואות ליניארית

תרגול מס' 6 פתרון מערכת משוואות ליניארית אנליזה נומרית 0211 סתיו - תרגול מס' 6 פתרון מערכת משוואות ליניארית נרצה לפתור את מערכת המשוואות יהי פתרון מקורב של נגדיר את השארית: ואת השגיאה: שאלה 1: נתונה מערכת המשוואות הבאה: הערך את השגיאה היחסית

Διαβάστε περισσότερα

תרגיל 13 משפטי רול ולגראנז הערות

תרגיל 13 משפטי רול ולגראנז הערות Mthemtics, Summer 20 / Exercise 3 Notes תרגיל 3 משפטי רול ולגראנז הערות. האם קיים פתרון למשוואה + x e x = בקרן )?(0, (רמז: ביחרו x,f (x) = e x הניחו שיש פתרון בקרן, השתמשו במשפט רול והגיעו לסתירה!) פתרון

Διαβάστε περισσότερα

2 יח"ל ) השלמה ל - 5 יח"ל) (50 נקודות) מעבר חוקי, ו-'שקר' אחרת.

2 יחל ) השלמה ל - 5 יחל) (50 נקודות) מעבר חוקי, ו-'שקר' אחרת. 1 6 מאי, 2004 מועד הבחינה: 2 יח"ל ) השלמה ל - 5 יח"ל) פרק ראשון (50 נקודות) :1 Ï (מקור: שירלי רוזנברג כהן) נגדיר טיפוס נתונים חדש בשם תלת-מחסנית, כמבנה המכיל 3 מחסניות S3. S2, S1, נגדיר את הפעולות הבאות

Διαβάστε περισσότερα

= 2. + sin(240 ) = = 3 ( tan(α) = 5 2 = sin(α) = sin(α) = 5. os(α) = + c ot(α) = π)) sin( 60 ) sin( 60 ) sin(

= 2. + sin(240 ) = = 3 ( tan(α) = 5 2 = sin(α) = sin(α) = 5. os(α) = + c ot(α) = π)) sin( 60 ) sin( 60 ) sin( א. s in(0 c os(0 s in(60 c os(0 s in(0 c os(0 s in(0 c os(0 s in(0 0 s in(70 מתאים לזהות של cos(θsin(φ : s in(θ φ s in(θcos(φ sin ( π cot ( π cos ( 4πtan ( 4π sin ( π cos ( π sin ( π cos ( 4π sin ( 4π

Διαβάστε περισσότερα

[ ] Observability, Controllability תרגול 6. ( t) t t קונטרולבילית H למימדים!!) והאובז' דוגמא: x. נשתמש בעובדה ש ) SS rank( S) = rank( עבור מטריצה m

[ ] Observability, Controllability תרגול 6. ( t) t t קונטרולבילית H למימדים!!) והאובז' דוגמא: x. נשתמש בעובדה ש ) SS rank( S) = rank( עבור מטריצה m Observabiliy, Conrollabiliy תרגול 6 אובזרווביליות אם בכל רגע ניתן לשחזר את ( (ומכאן גם את המצב לאורך זמן, מתוך ידיעת הכניסה והיציאה עד לרגע, וזה עבור כל צמד כניסה יציאה, אז המערכת אובזרוובילית. קונטרולביליות

Διαβάστε περισσότερα

תרגול פעולות מומצאות 3

תרגול פעולות מומצאות 3 תרגול פעולות מומצאות. ^ = ^ הפעולה החשבונית סמן את הביטוי הגדול ביותר:. ^ ^ ^ π ^ הפעולה החשבונית c) #(,, מחשבת את ממוצע המספרים בסוגריים.. מהי תוצאת הפעולה (.7,.0,.)#....0 הפעולה החשבונית משמשת חנות גדולה

Διαβάστε περισσότερα

פתרון תרגיל 5 מבוא ללוגיקה ותורת הקבוצות, סתיו תשע"ד

פתרון תרגיל 5 מבוא ללוגיקה ותורת הקבוצות, סתיו תשעד פתרון תרגיל 5 מבוא ללוגיקה ותורת הקבוצות, סתיו תשע"ד 1. לכל אחת מן הפונקציות הבאות, קבעו אם היא חח"ע ואם היא על (הקבוצה המתאימה) (א) 3} {1, 2, 3} {1, 2, : f כאשר 1 } 1, 3, 3, 3, { 2, = f לא חח"ע: לדוגמה

Διαβάστε περισσότερα

מבני נתונים (234218) 1

מבני נתונים (234218) 1 מבני נתונים (234218) 1 חומר עזר לבחינה 13 בספטמבר 2016 שימו לב: מותר לצטט טענות המופיעות בדף זה ללא הוכחה. כל טענה אחרת, שאינה מופיעה באופן מפורש, יש לנמק באופן מלא. נימוקים מהצורה "בדומה לטענה שבחומר

Διαβάστε περισσότερα

לוגיקה ותורת הקבוצות פתרון תרגיל בית 8 חורף תשע"ו ( ) ... חלק ראשון: שאלות שאינן להגשה נפריד למקרים:

לוגיקה ותורת הקבוצות פתרון תרגיל בית 8 חורף תשעו ( ) ... חלק ראשון: שאלות שאינן להגשה נפריד למקרים: לוגיקה ותורת הקבוצות פתרון תרגיל בית 8 חורף תשע"ו ( 2016 2015 )............................................................................................................. חלק ראשון: שאלות שאינן להגשה.1

Διαβάστε περισσότερα

תוכן הפרק: ,best case, average case דוגמאות 1. זמן - נמדד באמצעות מס' פעולות סיבוכיות, דוגמאות, שיפור בפקטור קבוע האלגוריתם. וגודלם. איטרטיביים. לקלט.

תוכן הפרק: ,best case, average case דוגמאות 1. זמן - נמדד באמצעות מס' פעולות סיבוכיות, דוגמאות, שיפור בפקטור קבוע האלגוריתם. וגודלם. איטרטיביים. לקלט. פרק סיבוכיות פרק סיבוכיות המושג יעילות מהו? במדעי המחשב היעילות נמדדת בעזרת מדדי סיבוכיות, החשובים שבהם: של אלגוריתמים יעילותם תוכן הפרק: יעילות מהי (זיכרון וזמן, זמן ריצה T( של אלגוריתם מהו, מהם case,

Διαβάστε περισσότερα

מבני נתונים עצים שיעור 7

מבני נתונים עצים שיעור 7 בס ד מבני נתונים עצים שיעור 7 שי גולן כ ח בניסן, תשע ו 6 במאי 2016 תקציר בתרגול זה נתחיל לדון בעצים. נגדיר עצים כלליים ועצים בינאריים, ונציג את ההגדרות הבסיסיות בתחום. נתרגל הוכחת תכונות של עצים באמצעות

Διαβάστε περισσότερα

I. גבולות. x 0. מתקיים L < ε. lim אם ורק אם. ( x) = 1. lim = 1. lim. x x ( ) הפונקציה נגזרות Δ 0. x Δx

I. גבולות. x 0. מתקיים L < ε. lim אם ורק אם. ( x) = 1. lim = 1. lim. x x ( ) הפונקציה נגזרות Δ 0. x Δx דפי נוסחאות I גבולות נאמר כי כך שלכל δ קיים > ε לכל > lim ( ) L המקיים ( ) מתקיים L < ε הגדרת הגבול : < < δ lim ( ) lim ורק ( ) משפט הכריך (סנדוויץ') : תהיינה ( ( ( )g ( )h פונקציות המוגדרות בסביבה נקובה

Διαβάστε περισσότερα

לדוגמה: במפורט: x C. ,a,7 ו- 13. כלומר בקיצור

לדוגמה: במפורט: x C. ,a,7 ו- 13. כלומר בקיצור הרצאה מס' 1. תורת הקבוצות. מושגי יסוד בתורת הקבוצות.. 1.1 הקבוצה ואיברי הקבוצות. המושג קבוצה הוא מושג בסיסי במתמטיקה. אין מושגים בסיסים יותר, אשר באמצעותם הגדרתו מתאפשרת. הניסיון והאינטואיציה עוזרים להבין

Διαβάστε περισσότερα

מבני נתונים 08a תרגול 8 14/2/2008 המשך ערמות ליאור שפירא

מבני נתונים 08a תרגול 8 14/2/2008 המשך ערמות ליאור שפירא מבני נתונים 08a תרגול 8 14/2/2008 המשך ערמות ליאור שפירא ערמות פיבונאצ'י Operation Linked List Binary Heap Binomial Heap Fibonacci Heap Relaxed Heap make-heap 1 1 1 1 1 is-empty 1 1 1 1 1 insert 1 log

Διαβάστε περισσότερα

כלליים זמן: S מחסנית, top(s) ראש המחסנית. (Depth First Search) For each unmarked DFS(v) / BFS(v) רקורסיבי. אלגוריתם :BFS

כלליים זמן: S מחסנית, top(s) ראש המחסנית. (Depth First Search) For each unmarked DFS(v) / BFS(v) רקורסיבי. אלגוריתם :BFS כלליים שיטות חיפוש בבגרפים שיטה 1: חיפוש לרוחב S (readth irst Search) זמן: ) Θ( V + הרעיון: שימוש בתור.O שיטה 2: חיפוש לעומק S (epth irst Search) Θ( V + ) יהי =(V,) גרף כלשהו, V הוא צומת התחלת החיפוש.

Διαβάστε περισσότερα

דוגמה: יהי T עץ בינארי כפי שמתואר בציור הבא:

דוגמה: יהי T עץ בינארי כפי שמתואר בציור הבא: של שאלות מבחינות פתרונות.1 שאלהזוהופיעהבמבחןמועדג 01 דוגמה: יהי T עץ בינארי כפי שמתואר בציור הבא: הגדרות: עבור צומת בעץ בינארי T נסמן ב- T את תת העץ של T ששורשו. (תת העץ הזה כולל את ). נגדיר את תת העץ

Διαβάστε περισσότερα

אלגוריתמים בתורת הגרפים חלק ראשון

אלגוריתמים בתורת הגרפים חלק ראשון גירסה 1. 11.11.22 אלגוריתמים בתורת הגרפים חלק ראשון מסמך זה הינו הראשון בסדרת מסמכים אודות תורת הגרפים, והוא חופף בחלקו לקורס "אלגוריתמים בתורת הגרפים" בטכניון (שאינו מועבר יותר). ברצוני להודות תודה מיוחדת

Διαβάστε περισσότερα

חידה לחימום. כתבו תכappleית מחשב, המקבלת כקלט את M ו- N, מחליטה האם ברצוappleה להיות השחקן הפותח או השחקן השappleי, ותשחק כך שהיא תappleצח תמיד.

חידה לחימום. כתבו תכappleית מחשב, המקבלת כקלט את M ו- N, מחליטה האם ברצוappleה להיות השחקן הפותח או השחקן השappleי, ותשחק כך שהיא תappleצח תמיד. חידה לחימום ( M ש- N > (כך מספרים טבעיים Mו- N שappleי appleתוappleים בעלי אותה הזוגיות (שappleיהם זוגיים או שappleיהם אי - זוגיים). המספרים הטבעיים מ- Mעד Nמסודרים בשורה, ושappleי שחקappleים משחקים במשחק.

Διαβάστε περισσότερα

מתמטיקה בדידה תרגול מס' 13

מתמטיקה בדידה תרגול מס' 13 מתמטיקה בדידה תרגול מס' 13 נושאי התרגול: תורת הגרפים. 1 מושגים בסיסיים נדון בגרפים מכוונים. הגדרה 1.1 גרף מכוון הוא זוג סדור E G =,V כך ש V ו E. V הגרף נקרא פשוט אם E יחס אי רפלקסיבי. כלומר, גם ללא לולאות.

Διαβάστε περισσότερα

Logic and Set Theory for Comp. Sci.

Logic and Set Theory for Comp. Sci. 234293 - Logic and Set Theory for Comp. Sci. Spring 2008 Moed A Final [partial] solution Slava Koyfman, 2009. 1 שאלה 1 לא נכון. דוגמא נגדית מפורשת: יהיו } 2,(p 1 p 2 ) (p 2 p 1 ).Σ 2 = {p 2 p 1 },Σ 1 =

Διαβάστε περισσότερα

תשובות מלאות לבחינת הבגרות במתמטיקה מועד ג' תשע"ד, מיום 0/8/0610 שאלונים: 315, מוצע על ידי בית הספר לבגרות ולפסיכומטרי של אבירם פלדמן

תשובות מלאות לבחינת הבגרות במתמטיקה מועד ג' תשעד, מיום 0/8/0610 שאלונים: 315, מוצע על ידי בית הספר לבגרות ולפסיכומטרי של אבירם פלדמן תשובות מלאות לבחינת הבגרות במתמטיקה מועד ג' תשע"ד, מיום 0/8/0610 שאלונים: 315, 635865 מוצע על ידי בית הספר לבגרות ולפסיכומטרי של אבירם פלדמן שאלה מספר 1 נתון: 1. סדרה חשבונית שיש בה n איברים...2 3. האיבר

Διαβάστε περισσότερα

עץץץץ AVL. עץ AVL הוא עץ חיפוש בינארי שמקיים את התנאי הבא: לכל צומת x בעץ גורם האיזון של x הוא 1, 0, או 1-. הגדרה: במילים אחרות: לכל צומת x בעץ,

עץץץץ AVL. עץ AVL הוא עץ חיפוש בינארי שמקיים את התנאי הבא: לכל צומת x בעץ גורם האיזון של x הוא 1, 0, או 1-. הגדרה: במילים אחרות: לכל צומת x בעץ, עץץץץ AVL הגדרה: עץ AVL הוא עץ חיפוש בינארי שמקיים את התנאי הבא: לכל צומת x בעץ גורם האיזון של x הוא 1,, או 1-. h(t left(x) ) - h(t right(x) ) 1 במילים אחרות: לכל צומת x בעץ, בעץ AVL שומרים עבור כל צומת

Διαβάστε περισσότερα

מבני נתונים ויעילות אלגוריתמים

מבני נתונים ויעילות אלגוריתמים חידה לחימום בסל מקש יש צמר. כדורי 00 שני שחקנים משחקים בתורות: כל שחקן, בתורו, צריך להוציא כמות כלשהי של כדורי צמר מהסל לפחות כדור אחד, אך לא יותר ממחצית מכמות כדורי הצמר שבסל. מי שלא יכול לעשות מהלך (מתי

Διαβάστε περισσότερα

( )( ) ( ) f : B C היא פונקציה חח"ע ועל מכיוון שהיא מוגדרת ע"י. מכיוון ש f היא פונקציהאז )) 2 ( ( = ) ( ( )) היא פונקציה חח"ע אז ועל פי הגדרת

( )( ) ( ) f : B C היא פונקציה חחע ועל מכיוון שהיא מוגדרת עי. מכיוון ש f היא פונקציהאז )) 2 ( ( = ) ( ( )) היא פונקציה חחע אז ועל פי הגדרת הרצאה 7 יהיו :, : C פונקציות, אז : C חח"ע ו חח"ע,אז א אם על ו על,אז ב אם ( על פי הגדרת ההרכבה )( x ) = ( )( x x, כךש ) x א יהיו = ( x ) x חח"ע נקבל ש מכיוון ש חח"ע נקבל ש מכיוון ש ( b) = c כך ש b ( ) (

Διαβάστε περισσότερα

יסודות לוגיקה ותורת הקבוצות למערכות מידע (סמסטר ב 2012)

יסודות לוגיקה ותורת הקבוצות למערכות מידע (סמסטר ב 2012) יסודות לוגיקה ותורת הקבוצות למערכות מידע (סמסטר ב 2012) דף פתרונות 6 נושא: תחשיב הפסוקים: הפונקציה,val גרירה לוגית, שקילות לוגית 1. כיתבו טבלאות אמת לפסוקים הבאים: (ג) r)).((p q) r) ((p r) (q p q r (p

Διαβάστε περισσότερα

מתמטיקה בדידה תרגול מס' 5

מתמטיקה בדידה תרגול מס' 5 מתמטיקה בדידה תרגול מס' 5 נושאי התרגול: פונקציות 1 פונקציות הגדרה 1.1 פונקציה f מ A (התחום) ל B (הטווח) היא קבוצה חלקית של A B המקיימת שלכל a A קיים b B יחיד כך ש. a, b f a A.f (a) = ιb B. a, b f או, בסימון

Διαβάστε περισσότερα

השאלות ידי מצביעים לילדים.

השאלות ידי מצביעים לילדים. מבני נתונים פתרונות לסט שאלות דומה לשאלות מתרגיל 4 השאלות 1. כתבו פונקציה לא רקורסיבית שמדפיסה ב- Postorder את כל הנתונים המאוכסנים בעץ בינארי T. הפונקציה אינה צריכה להיות תלויה במימוש העץ T. הניחו שנתון

Διαβάστε περισσότερα

גבול ורציפות של פונקציה סקלרית שאלות נוספות

גבול ורציפות של פונקציה סקלרית שאלות נוספות 08 005 שאלה גבול ורציפות של פונקציה סקלרית שאלות נוספות f ( ) f ( ) g( ) f ( ) ו- lim f ( ) ו- ( ) (00) lim ( ) (00) f ( בסביבת הנקודה (00) ) נתון: מצאו ) lim g( ( ) (00) ננסה להיעזר בכלל הסנדביץ לשם כך

Διαβάστε περισσότερα

מיונים א': מיון (Sorting) HeapSort. QuickSort תור עדיפויות / ערימה

מיונים א': מיון (Sorting) HeapSort. QuickSort תור עדיפויות / ערימה מיון (Sorting) void BubbleSort(int* A, int n){ for (i = ; i < n-; i++) for (j = n-; j >= i; j--) if ( a[j] > a[j+]) swap(&a[j], &a[j+]); מערך בן מספרים. קלט: מערך ובו המספרים מאוחסנים בסדר עולה (או יורד).

Διαβάστε περισσότερα

x a x n D f (iii) x n a ,Cauchy

x a x n D f (iii) x n a ,Cauchy גבולות ורציפות גבול של פונקציה בנקודה הגדרה: קבוצה אשר מכילה קטע פתוח שמכיל את a תקרא סביבה של a. קבוצה אשר מכילה קטע פתוח שמכיל את a אך לא מכילה את a עצמו תקרא סביבה מנוקבת של a. יהו a R ו f פונקציה מוגדרת

Διαβάστε περισσότερα

ניהול תמיכה מערכות שלבים: DFfactor=a-1 DFt=an-1 DFeror=a(n-1) (סכום _ הנתונים ( (מספר _ חזרות ( (מספר _ רמות ( (סכום _ ריבועי _ כל _ הנתונים (

ניהול תמיכה מערכות שלבים: DFfactor=a-1 DFt=an-1 DFeror=a(n-1) (סכום _ הנתונים ( (מספר _ חזרות ( (מספר _ רמות ( (סכום _ ריבועי _ כל _ הנתונים ( תכנון ניסויים כאשר קיימת אישביעות רצון מהמצב הקיים (למשל כשלים חוזרים בבקרת תהליכים סטטיסטית) נחפש דרכים לשיפור/ייעול המערכת. ניתן לבצע ניסויים על גורם בודד, שני גורמים או יותר. ניסויים עם גורם בודד: נבצע

Διαβάστε περισσότερα

סיכום- בעיות מינימוםמקסימום - שאלון 806

סיכום- בעיות מינימוםמקסימום - שאלון 806 סיכום- בעיות מינימוםמקסימום - שאלון 806 בבעיותמינימום מקסימוםישלחפשאתנקודותהמינימוםהמוחלטוהמקסימוםהמוחלט. בשאלות מינימוםמקסימוםחובהלהראותבעזרתטבלה אובעזרתנגזרתשנייהשאכן מדובר עלמינימוםאומקסימום. לצורךקיצורהתהליך,

Διαβάστε περισσότερα

סדרות - תרגילים הכנה לבגרות 5 יח"ל

סדרות - תרגילים הכנה לבגרות 5 יחל סדרות - הכנה לבגרות 5 יח"ל 5 יח"ל סדרות - הכנה לבגרות איברים ראשונים בסדרה) ) S מסמן סכום תרגיל S0 S 5, S6 בסדרה הנדסית נתון: 89 מצא את האיבר הראשון של הסדרה תרגיל גוף ראשון, בשנייה הראשונה לתנועתו עבר

Διαβάστε περισσότερα

הגדרה: קבוצת פעילויות חוקית היא קבוצה בה כל שתי פעילויות

הגדרה: קבוצת פעילויות חוקית היא קבוצה בה כל שתי פעילויות אלגוריתמים חמדניים אלגוריתם חמדן, הוא כזה שבכל צעד עושה את הבחירה הטובה ביותר האפשרית, ולא מתחרט בהמשך גישה זו נראית פשטנית מדי, וכמובן שלא תמיד היא נכונה, אך במקרים רבים היא מוצאת פתרון אופטימאלי בתרגול

Διαβάστε περισσότερα

חידה לחימום. כתבו תכנית שהקלט שלה הוא מספר שלם n,

חידה לחימום. כתבו תכנית שהקלט שלה הוא מספר שלם n, חידה לחימום נתון פיגום משולש של מוטות המחברים קודקודים ויוצרים קומות של משולשים קטנים, כמודגם באיור הבא, בו מתואר פיגום משולש בן שתי קומות: משימתו של פועל העובד בפיגום היא להתקדם מן הקודקוד השמאלי התחתון

Διαβάστε περισσότερα

לוגיקה ותורת הקבוצות פתרון תרגיל בית 4 אביב תשע"ו (2016)

לוגיקה ותורת הקבוצות פתרון תרגיל בית 4 אביב תשעו (2016) לוגיקה ותורת הקבוצות פתרון תרגיל בית 4 אביב תשע"ו (2016)............................................................................................................. חלק ראשון: שאלות שאינן להגשה 1. עבור

Διαβάστε περισσότερα

. {e M: x e} מתקיים = 1 x X Y

. {e M: x e} מתקיים = 1 x X Y שימושי זרימה פרק 7.5-13 ב- Kleinberg/Tardos שידוך בגרף דו-צדדי עיבוד תמונות 1 בעיית השידוך באתר שידוכים רשומים m נשים ו- n גברים. תוכנת האתר מאתרת זוגות מתאימים. בהינתן האוסף של ההתאמות האפשריות, יש לשדך

Διαβάστε περισσότερα

' 2 סמ ליגרת ןורתפ םיפרגה תרותב םימתירוגלא דדצ 1 : הלאש ןורתפ רבסה תורעה

' 2 סמ ליגרת ןורתפ םיפרגה תרותב םימתירוגלא דדצ 1 : הלאש ןורתפ רבסה תורעה אלגוריתמים בתורת הגרפים פתרון תרגיל מס' 2 לשאלות והערות נא לפנות לאילן גרונאו (shrilan@cs.technion.ac.il) א) ב) ג) גרף דו-צדדי (bipartite) הינו גרף (E )G V, אשר קיימת חלוקה של צמתיו לשתי קבוצות U,W e =

Διαβάστε περισσότερα

Hash Tables (המשך) ערבול (Hashing)

Hash Tables (המשך) ערבול (Hashing) מילון עם מפתחות שלמים Lecture of Geiger & Itai s slide brochure www.cs.technion.ac.il/~dang/courseds טבלאות ערבול הפעולות הבסיסיות של מילון הן כזכור חיפוש, הכנסה, והוצאה. אם המפתחות מספרים שלמים בתחום

Διαβάστε περισσότερα

1 תוחלת מותנה. c ארזים 3 במאי G מדיד לפי Y.1 E (X1 A ) = E (Y 1 A )

1 תוחלת מותנה. c ארזים 3 במאי G מדיד לפי Y.1 E (X1 A ) = E (Y 1 A ) הסתברות למתמטיקאים c ארזים 3 במאי 2017 1 תוחלת מותנה הגדרה 1.1 לכל משתנה מקרי X אינטגרבילית ותת סיגמא אלגברה G F קיים משתנה מקרי G) Y := E (X המקיים: E (X1 A ) = E (Y 1 A ).G מדיד לפי Y.1.E Y

Διαβάστε περισσότερα

שאלה 1 V AB פתרון AB 30 R3 20 R

שאלה 1 V AB פתרון AB 30 R3 20 R תרגילים בתורת החשמל כתה יג שאלה א. חשב את המתח AB לפי משפט מילמן. חשב את הזרם בכל נגד לפי המתח שקיבלת בסעיף א. A 60 0 8 0 0.A B 8 60 0 0. AB 5. v 60 AB 0 0 ( 5.) 0.55A 60 א. פתרון 0 AB 0 ( 5.) 0 0.776A

Διαβάστε περισσότερα

תכנון אלגוריתמים 2016 עבודה 1 שאלה 1 פתרון נתונות שתי בעיות. יש למצוא: אורך מסלול קצר ביותר המתחיל באחד מן הקודקודים s 1,..., s k ומסתיים ב t.

תכנון אלגוריתמים 2016 עבודה 1 שאלה 1 פתרון נתונות שתי בעיות. יש למצוא: אורך מסלול קצר ביותר המתחיל באחד מן הקודקודים s 1,..., s k ומסתיים ב t. תכנון אלגוריתמים 2016 עבודה 1 פתרון שאלה 1 נזכר כי בגרף (E G, =,V) עבור שני קודקודים d(u, (v,u, v הוא אורך מסלול קצר ביותר מ u ל v. אם אין מסלול מ u ל.d(u, v) =,v נתונות שתי בעיות. בעיה א' מופע: גרף מכוון

Διαβάστε περισσότερα

חלק א' שאלה 3. a=3, b=2, k=0 3. T ( n) היותר H /m.

חלק א' שאלה 3. a=3, b=2, k=0 3. T ( n) היותר H /m. פתרון למבחן במבני נתונים, מועד א', קיץ 2005 חלק א' שאלה 1 א. רכיב הקשירות החזק של קודקוד x בגרף מכוון הינו אוסף כל הקודקודים y שמקימים שיש מסלול מ- x ל- y וכן מסלול מy ל- x. טעויות נפוצות שכחו לכתוב שזה

Διαβάστε περισσότερα

gcd 24,15 = 3 3 =

gcd 24,15 = 3 3 = מחלק משותף מקסימאלי משפט אם gcd a, b = g Z אז קיימים x, y שלמים כך ש.g = xa + yb במלים אחרות, אם ה כך ש.gcd a, b = xa + yb gcd,a b של שני משתנים הוא מספר שלם, אז קיימים שני מקדמים שלמים כאלה gcd 4,15 =

Διαβάστε περισσότερα

דף פתרונות 7 נושא: תחשיב הפסוקים: צורה דיסיונקטיבית נורמלית, מערכת קשרים שלמה, עקביות

דף פתרונות 7 נושא: תחשיב הפסוקים: צורה דיסיונקטיבית נורמלית, מערכת קשרים שלמה, עקביות יסודות לוגיקה ותורת הקבוצות למערכות מידע (סמסטר ב 2012) דף פתרונות 7 נושא: תחשיב הפסוקים: צורה דיסיונקטיבית נורמלית, מערכת קשרים שלמה, עקביות 1. מצאו צורה דיסיונקטיבית נורמלית קנונית לפסוקים הבאים: (ג)

Διαβάστε περισσότερα

TECHNION - ISRAEL INSTITUTE OF TECHNOLOGY DEPARTMENT OF COMPUTER SCIENCE סמסטר אביב תשס"ו מס' סטודנט:

TECHNION - ISRAEL INSTITUTE OF TECHNOLOGY DEPARTMENT OF COMPUTER SCIENCE סמסטר אביב תשסו מס' סטודנט: TECHNION ISRAEL INSTITUTE OF TECHNOLOGY DEPARTMENT OF COMPUTER SCIENCE הטכניון מכון טכנולוגי לישראל הפקולטה למדעי המחשב מבני נתונים 234218 1 מבחן מועד ב ' סמסטר אביב תשס"ו מרצה: אהוד ריבלין מתרגלים: איתן

Διαβάστε περισσότερα

פרק 13 רקורסיה רקורסיה רקורסיה רקורסיות פשוטות: חישוב עצרת. תמונת המחסנית ב-() factorial רקורסיות פשוטות: פיבונאצ'י

פרק 13 רקורסיה רקורסיה רקורסיה רקורסיות פשוטות: חישוב עצרת. תמונת המחסנית ב-() factorial רקורסיות פשוטות: פיבונאצ'י פרק 3 רקורסיה רקורסיה נכתב ע"י רן רובינשטיין עודכן ע"י איתי שרון רקורסיה הינה שיטה לתכנון אלגוריתמים, שבה הפתרון לקלט כלשהו מתקבל על ידי פתרון אותה הבעיה בדיוק על קלט פשוט יותר, והרחבת פתרון זה לאחר מכן

Διαβάστε περισσότερα

השאלות..h(k) = k mod m

השאלות..h(k) = k mod m מבני נתונים פתרונות לסט שאלות דומה לשאלות מתרגיל 5 השאלות 2. נתונה טבלת ערבול שבה התנגשויות נפתרות בשיטת.Open Addressing הכניסו לטבלה את המפתחות הבאים: 59 88, 17, 28, 15, 4, 31, 22, 10, (מימין לשמאל),

Διαβάστε περισσότερα

אלגברה ליניארית (1) - תרגיל 6

אלגברה ליניארית (1) - תרגיל 6 אלגברה ליניארית (1) - תרגיל 6 התרגיל להגשה עד יום חמישי (12.12.14) בשעה 16:00 בתא המתאים בבניין מתמטיקה. נא לא לשכוח פתקית סימון. 1. עבור כל אחד מתת המרחבים הבאים, מצאו בסיס ואת המימד: (א) 3)} (0, 6, 3,,

Διαβάστε περισσότερα

קבוצה היא שם כללי לתיאור אוסף כלשהו של איברים.

קבוצה היא שם כללי לתיאור אוסף כלשהו של איברים. א{ www.sikumuna.co.il מהי קבוצה? קבוצה היא שם כללי לתיאור אוסף כלשהו של איברים. קבוצה היא מושג יסודי במתמטיקה.התיאור האינטואיטיבי של קבוצה הוא אוסף של עצמים כלשהם. העצמים הנמצאים בקבוצה הם איברי הקבוצה.

Διαβάστε περισσότερα

לוגיקה ותורת הקבוצות מבחן סופי אביב תשע"ב (2012) דפי עזר

לוגיקה ותורת הקבוצות מבחן סופי אביב תשעב (2012) דפי עזר לוגיקה ותורת הקבוצות מבחן סופי אביב תשע"ב (2012) דפי עזר תורת הקבוצות: סימונים.N + = N \ {0} קבוצת המספרים הטבעיים; N Z קבוצת המספרים השלמים. Q קבוצת המספרים הרציונליים. R קבוצת המספרים הממשיים. הרכבת

Διαβάστε περισσότερα

brookal/logic.html לוגיקה מתמטית תרגיל אלון ברוק

brookal/logic.html לוגיקה מתמטית תרגיל אלון ברוק יום א 14 : 00 15 : 00 בניין 605 חדר 103 http://u.cs.biu.ac.il/ brookal/logic.html לוגיקה מתמטית תרגיל אלון ברוק 29/11/2017 1 הגדרת קבוצת הנוסחאות הבנויות היטב באינדוקציה הגדרה : קבוצת הנוסחאות הבנויות

Διαβάστε περισσότερα

אלגוריתמים בתורת הגרפים חלק שני

אלגוריתמים בתורת הגרפים חלק שני גירסה 1.00 5.12.2002 אלגוריתמים בתורת הגרפים חלק שני מסמך זה הינו השני בסדרת מסמכים אודות תורת הגרפים, והוא חופף בחלקו לקורס "אלגוריתמים בתורת הגרפים" בטכניון (שאינו מועבר יותר). ברצוני להודות תודה מיוחדת

Διαβάστε περισσότερα

{ : Halts on every input}

{ : Halts on every input} אוטומטים - תרגול 13: רדוקציות, משפט רייס וחזרה למבחן E תכונה תכונה הינה אוסף השפות מעל.(property המקיימות תנאים מסוימים (תכונה במובן של Σ תכונה לא טריביאלית: תכונה היא תכונה לא טריוויאלית אם היא מקיימת:.

Διαβάστε περισσότερα

ניתוח סיבוכיות - פונקציות רקורסיביות פיתוח טלסקופי

ניתוח סיבוכיות - פונקציות רקורסיביות פיתוח טלסקופי ניתוח סיבוכיות - פונקציות רקורסיביות פיתוח טלסקופי ננסה להשתמש בכך שהפונקציה היא רקורסיבית על מנת לרשום גם עבור הסיבוכיות ביטוי רקורסיבי. factorial() 3 מתחילים מכתיבת ביטוי לא מפורש ל-( T( ביטוי רקורסיבי

Διαβάστε περισσότερα

c ארזים 26 בינואר משפט ברנסייד פתירה. Cl (z) = G / Cent (z) = q b r 2 הצגות ממשיות V = V 0 R C אזי מקבלים הצגה מרוכבת G GL R (V 0 ) GL C (V )

c ארזים 26 בינואר משפט ברנסייד פתירה. Cl (z) = G / Cent (z) = q b r 2 הצגות ממשיות V = V 0 R C אזי מקבלים הצגה מרוכבת G GL R (V 0 ) GL C (V ) הצגות של חבורות סופיות c ארזים 6 בינואר 017 1 משפט ברנסייד משפט 1.1 ברנסייד) יהיו p, q ראשוניים. תהי G חבורה מסדר.a, b 0,p a q b אזי G פתירה. הוכחה: באינדוקציה על G. אפשר להניח כי > 1 G. נבחר תת חבורה

Διαβάστε περισσότερα

פתרון תרגיל 6 ממשוואות למבנים אלגברה למדעי ההוראה.

פתרון תרגיל 6 ממשוואות למבנים אלגברה למדעי ההוראה. פתרון תרגיל 6 ממשוואות למבנים אלגברה למדעי ההוראה. 16 במאי 2010 נסמן את מחלקת הצמידות של איבר בחבורה G על ידי } g.[] { y : g G, y g כעת נניח כי [y] [] עבור שני איברים, y G ונוכיח כי [y].[] מאחר והחיתוך

Διαβάστε περισσότερα

תרגול 1 חזרה טורי פורייה והתמרות אינטגרליות חורף תשע"ב זהויות טריגונומטריות

תרגול 1 חזרה טורי פורייה והתמרות אינטגרליות חורף תשעב זהויות טריגונומטריות תרגול חזרה זהויות טריגונומטריות si π α) si α π α) α si π π ), Z si α π α) t α cot π α) t α si α cot α α α si α si α + α siα ± β) si α β ± α si β α ± β) α β si α si β si α si α α α α si α si α α α + α si

Διαβάστε περισσότερα

תכנון דינאמי. , p p p והמטריצה המתקבלת היא בגודל

תכנון דינאמי. , p p p והמטריצה המתקבלת היא בגודל תכנון אלגוריתמים, אביב, תרגול מס' תכנון דינאמי תכנון דינאמי בתרגול זה נדון בבעיית הכפלת סדרת מטריצות (6..(CLR ראשית נראה דוגמא:. A, A, A, A נסמן את גודל המטריצות בסדרה ע"י סדרת גדלים כאשר, p 5 5 p היא

Διαβάστε περισσότερα

co ארזים 3 במרץ 2016

co ארזים 3 במרץ 2016 אלגברה לינארית 2 א co ארזים 3 במרץ 2016 ניזכר שהגדרנו ווקטורים וערכים עצמיים של מטריצות, והראינו כי זהו מקרה פרטי של ההגדרות עבור טרנספורמציות. לכן כל המשפטים והמסקנות שהוכחנו לגבי טרנספורמציות תקפים גם

Διαβάστε περισσότερα

חישוביות הרצאה 4 לא! זיהוי שפות ע''י מכונות טיורינג הוכחה: הגדרת! : f r

חישוביות הרצאה 4 לא! זיהוי שפות ע''י מכונות טיורינג הוכחה: הגדרת! : f r ל' ' פונקציות פרימיטיביות רקורסיביות חישוביות הרצאה 4 האם כל פונקציה מלאה היא פרימיטיבית רקורסיבית? לא נראה שתי הוכחות: פונקציות רקורסיביות (המשך) זיהוי שפות ע''י מכונות טיורינג הוכחה קיומית: קיימות פונקציות

Διαβάστε περισσότερα

logn) = nlog. log(2n

logn) = nlog. log(2n תכנוןוניתוחאלגוריתמים סיכוםהתרגולים n log O( g( n)) = Ω( g( n)) = θ ( g( n)) = תרגול.3.04 סיבוכיות { f ( n) c> 0, n0 > 0 n> n0 0 f ( n) c g( n) } { f ( n) c> 0, n0 > 0 n> n0 0 c g( n) f ( n) } { f ( n)

Διαβάστε περισσότερα

אינפי - 1 תרגול בינואר 2012

אינפי - 1 תרגול בינואר 2012 אינפי - תרגול 4 3 בינואר 0 רציפות במידה שווה הגדרה. נאמר שפונקציה f : D R היא רציפה במידה שווה אם לכל > 0 ε קיים. f(x) f(y) < ε אז x y < δ אם,x, y D כך שלכל δ > 0 נביט במקרה בו D הוא קטע (חסום או לא חסום,

Διαβάστε περισσότερα

מבני נתונים הגבלת אחריות פרק - 1 אלגוריתמי מיון ואנליזה אסימפטוטית. מיון בועות Sort Bubble מאת : סשה גולדשטיין,

מבני נתונים הגבלת אחריות פרק - 1 אלגוריתמי מיון ואנליזה אסימפטוטית. מיון בועות Sort Bubble מאת : סשה גולדשטיין, 009 מבני נתונים סיכום למבחן, יולי sashag@cs מאת : סשה גולדשטיין, 7:50,3.7.09 עדכון אחרון : בשעה הגבלת אחריות הסיכום להלן הוא האינטרפרטציה שלי של החומר, שממש לא חייבת להיות נכונה או מייצגת את זו של הסגל.

Διαβάστε περισσότερα

תאריך הבחינה: שם המרצה: רפי כהן שם המתרגל: יסודות מבני נתונים שם הקורס:

תאריך הבחינה: שם המרצה: רפי כהן שם המתרגל: יסודות מבני נתונים שם הקורס: תאריך הבחינה:... נובה פנדינה שם המרצה: רפי כהן שם המתרגל: יסודות מבני נתונים שם הקורס:..00 מספר הקורס:. סמסטר: א' מועד: שנה: שלוש שעות משך הבחינה: ללא חומר עזר חומר עזר: ב' הנחיות חשובות: רצוי לפתור את

Διαβάστε περισσότερα

Trie מאפשר חיפוש, הכנסה, הוצאה, ומציאת מינימום (לקסיקוגרפי) של מחרוזות.

Trie מאפשר חיפוש, הכנסה, הוצאה, ומציאת מינימום (לקסיקוגרפי) של מחרוזות. מילון למחרוזות - Trie Lecture of Geiger & Itai s slide brochure www.cs.technion.ac.il/~dang/courseds מבני נתונים למחרוזות Trie מאפשר חיפוש, הכנסה, הוצאה, ומציאת מינימום (לקסיקוגרפי) של מחרוזות. המימוש

Διαβάστε περισσότερα

אלגברה מודרנית פתרון שיעורי בית 6

אלגברה מודרנית פתרון שיעורי בית 6 אלגברה מודרנית פתרון שיעורי בית 6 15 בינואר 016 1. יהי F שדה ויהיו q(x) p(x), שני פולינומים מעל F. מצאו פולינומים R(x) S(x), כך שמתקיים R(x),p(x) = S(x)q(x) + כאשר deg(q),deg(r) < עבור המקרים הבאים: (תזכורת:

Διαβάστε περισσότερα

סיכום בנושא של דיפרנציאביליות ונגזרות כיווניות

סיכום בנושא של דיפרנציאביליות ונגזרות כיווניות סיכום בנושא של דיפרנציאביליות ונגזרות כיווניות 25 בדצמבר 2016 תזכורת: תהי ) n f ( 1, 2,..., פונקציה המוגדרת בסביבה של f. 0 גזירה חלקית לפי משתנה ) ( = 0, אם קיים הגבול : 1 0, 2 0,..., בנקודה n 0 i f(,..,n,).lim

Διαβάστε περισσότερα

רשימת משפטים והגדרות

רשימת משפטים והגדרות רשימת משפטים והגדרות חשבון אינפיניטיסימאלי ב' מרצה : למברג דן 1 פונקציה קדומה ואינטגרל לא מסויים הגדרה 1.1. (פונקציה קדומה) יהי f :,] [b R פונקציה. פונקציה F נקראת פונקציה קדומה של f אם.[, b] גזירה ב F

Διαβάστε περισσότερα

תורת הקבוצות תרגיל בית 2 פתרונות

תורת הקבוצות תרגיל בית 2 פתרונות תורת הקבוצות תרגיל בית 2 פתרונות חיים שרגא רוזנר כ"ה בניסן, תשע"ה תזכורות תקציר איזומורפיזם סדר, רישא, טרנזיטיביות, סודרים, השוואת סודרים, סודר עוקב, סודר גבולי. 1. טרנזיטיבות וסודרים קבוצה A היא טרנזיטיבית

Διαβάστε περισσότερα

תוכן עניינים I בעיות מיון 2 1 סימון אסימפטוטי... 2 II מבני נתונים 20 8 מבני נתונים מופשטים משפט האב גרפים... 37

תוכן עניינים I בעיות מיון 2 1 סימון אסימפטוטי... 2 II מבני נתונים 20 8 מבני נתונים מופשטים משפט האב גרפים... 37 תוכן עניינים I בעיות מיון 2 1 סימון אסימפטוטי................................................ 2 2 מיון בועות. Bubble Sort............................................ 2 3 מיון מיזוג. Merge Sort............................................

Διαβάστε περισσότερα

מבני נתונים אדמיניסטרציה ד"ר אלכס סמורודניצקי, רוס 210, שני 5:30 4:15. ציון:

מבני נתונים אדמיניסטרציה דר אלכס סמורודניצקי, רוס 210, שני 5:30 4:15. ציון: מבני נתונים בס"ד, ט' אדר א' תשע"א: שעור 1 אדמיניסטרציה ד"ר אלכס סמורודניצקי, רוס 210, שני 5:30 4:15. ציון: בחינת מגן 20%. תרגילים: 14 13, מורידים את האחד הכי גרוע. 10% מהציון. אתר: www.cs.huji.ac.il/~dast

Διαβάστε περισσότερα

סיכום חקירת משוואות מהמעלה הראשונה ומהמעלה השנייה פרק זה הינו חלק מסיכום כולל לשאלון 005 שנכתב על-ידי מאיר בכור

סיכום חקירת משוואות מהמעלה הראשונה ומהמעלה השנייה פרק זה הינו חלק מסיכום כולל לשאלון 005 שנכתב על-ידי מאיר בכור סיכום חקירת משוואות מהמעלה הראשונה ומהמעלה השנייה פרק זה הינו חלק מסיכום כולל לשאלון 5 שנכתב על-ידי מאיר בכור. חקירת משוואה מהמעלה הראשונה עם נעלם אחד = הצורה הנורמלית של המשוואה, אליה יש להגיע, היא: b

Διαβάστε περισσότερα

3-9 - a < x < a, a < x < a

3-9 - a < x < a, a < x < a 1 עמוד 59, שאלהמס', 4 סעיףג' תיקוני הקלדה שאלון 806 צריך להיות : ג. מצאאתמקומושלאיברבסדרהזו, שקטןב- 5 מסכוםכלהאיבריםשלפניו. עמוד 147, שאלהמס' 45 ישלמחוקאתהשאלה (מופיעהפעמיים) עמוד 184, שאלהמס', 9 סעיףב',תשובה.

Διαβάστε περισσότερα

מבני נתונים מבחן מועד ב' סמסטר חורף תשס"ו

מבני נתונים מבחן מועד ב' סמסטר חורף תשסו TECHNION - ISRAEL INSTITUTE OF TECHNOLOGY DEPARTMENT OF COMPUTER SCIENCE הטכניון - מכון טכנולוגי לישראל הפקולטה למדעי המחשב מרצים: רן אל-יניב, נאדר בשותי מבני נתונים 234218-1 מבחן מועד ב' סמסטר חורף תשס"ו

Διαβάστε περισσότερα

מודלים חישוביים תרגולמס 5

מודלים חישוביים תרגולמס 5 מודלים חישוביים תרגולמס 5 30 במרץ 2016 נושאי התרגול: דקדוקים חסרי הקשר. למת הניפוח לשפות חסרות הקשר. פעולות סגור לשפות חסרות הקשר. 1 דקדוקים חסרי הקשר נזכיר כי דקדוק חסר הקשר הוא רביעיה =(V,Σ,R,S) G, כך

Διαβάστε περισσότερα

מבני נתונים מבחן מועד א' סמסטר חורף תשס"ו

מבני נתונים מבחן מועד א' סמסטר חורף תשסו TECHNION - ISRAEL INSTITUTE OF TECHNOLOGY DEPARTMENT OF COMPUTER SCIENCE הטכניון - מכון טכנולוגי לישראל הפקולטה למדעי המחשב מרצים: רן אל-יניב, נאדר בשותי מבני נתונים 234218-1 מבחן מועד א' סמסטר חורף תשס"ו

Διαβάστε περισσότερα

תאריך עדכון אחרון: 27 בפברואר ניתוח לשיעורין analysis) (amortized הוא טכניקה לניתוח זמן ריצה לסדרת פעולות, אשר מאפשר קבלת

תאריך עדכון אחרון: 27 בפברואר ניתוח לשיעורין analysis) (amortized הוא טכניקה לניתוח זמן ריצה לסדרת פעולות, אשר מאפשר קבלת תרגול 3 ניתוח לשיעורין תאריך עדכון אחרון: 27 בפברואר 2011. ניתוח לשיעורין analysis) (amortized הוא טכניקה לניתוח זמן ריצה לסדרת פעולות, אשר מאפשר קבלת חסמי זמן ריצה נמוכים יותר מאשר חסמים המתקבלים כאשר

Διαβάστε περισσότερα

אלגוריתמים / תרגיל #1

אלגוריתמים / תרגיל #1 1 אריאל סטולרמן אלגוריתמים / תרגיל #1 קבוצה 02 (1) טענה: אם בגרף לא מכוון וקשיר יש 2 צמתים מדרגה אי זוגית ושאר הצמתים מדרגה זוגית, זהו תנאי הכרחי ומספיק לקיום מסלול אויילר בגרף. הערות: הוכחה: התוספת כי

Διαβάστε περισσότερα

לוגיקה ותורת הקבוצות מבחן סופי אביב תשע"ד (2014) דפי עזר

לוגיקה ותורת הקבוצות מבחן סופי אביב תשעד (2014) דפי עזר לוגיקה ותורת הקבוצות מבחן סופי אביב תשע"ד (2014) דפי עזר תורת הקבוצות: סימונים.N + = N \ {0} קבוצת המספרים הטבעיים; N Z קבוצת המספרים השלמים. Q קבוצת המספרים הרציונליים. R קבוצת המספרים הממשיים. הרכבת

Διαβάστε περισσότερα

תרגיל 7 פונקציות טריגונומטריות הערות

תרגיל 7 פונקציות טריגונומטריות הערות תרגיל 7 פונקציות טריגונומטריות הערות. פתרו את המשוואות הבאות. לא מספיק למצוא פתרון אחד יש למצוא את כולם! sin ( π (א) = x sin (ב) = x cos (ג) = x tan (ד) = x) (ה) = tan x (ו) = 0 x sin (x) + sin (ז) 3 =

Διαβάστε περισσότερα

אלגברה לינארית (1) - פתרון תרגיל 11

אלגברה לינארית (1) - פתרון תרגיל 11 אלגברה לינארית ( - פתרון תרגיל דרגו את המטריצות הבאות לפי אלגוריתם הדירוג של גאוס (א R R4 R R4 R=R+R R 3=R 3+R R=R+R R 3=R 3+R 9 4 3 7 (ב 9 4 3 7 7 4 3 9 4 3 4 R 3 R R3=R3 R R 4=R 4 R 7 4 3 9 7 4 3 8 6

Διαβάστε περισσότερα

תרגול 8: מטלאב לולאות

תרגול 8: מטלאב לולאות מבוא למחשב בשפת Matlab : מטלאב לולאות נכתב על-ידי רמי כהן,אולג רוכלנקו, לימור ליבוביץ ואיתן אביאור כל הזכויות שמורות לטכניון מכון טכנולוגי לישראל לולאת while a=input('enter a positive number:'); קליטת

Διαβάστε περισσότερα

s ק"מ קמ"ש מ - A A מ - מ - 5 p vp v=

s קמ קמש מ - A A מ - מ - 5 p vp v= את זמני הליכת הולכי הרגל עד הפגישות שלהם עם רוכב האופניים (שעות). בגרות ע מאי 0 מועד קיץ מבוטל שאלון 5006 מהירות - v קמ"ש t, א. () נסמן ב- p נכניס את הנתונים לטבלה מתאימה: רוכב אופניים עד הפגישה זמן -

Διαβάστε περισσότερα

מבני נתונים מבחן מועד א' סמסטר אביב תשס"ו

מבני נתונים מבחן מועד א' סמסטר אביב תשסו TECHNION ISRAEL INSTITUTE OF TECHNOLOGY DEPARTMENT OF COMPUTER SCIENCE הטכניון מכון טכנולוגי לישראל הפקולטה למדעי המחשב מרצה: אהוד ריבלין מבני נתונים 234218 1 מבחן מועד א' סמסטר אביב תשס"ו מתרגלים: איתן

Διαβάστε περισσότερα

"קשר-חם" : לקידום שיפור וריענון החינוך המתמטי

קשר-חם : לקידום שיפור וריענון החינוך המתמטי הטכניון - מכון טכנולוגי לישראל המחלקה להוראת הטכנולוגיה והמדעים "קשר-חם" : לקידום שיפור וריענון החינוך המתמטי נושא: חקירת משוואות פרמטריות בעזרת גרפים הוכן ע"י: אביבה ברש. תקציר: בחומר מוצגת דרך לחקירת

Διαβάστε περισσότερα